考虑以下JavaScript:
function correct() { return 15; } function wrong() { return 15; } console.log("correct() called : "+correct()); console.log("wrong() called : "+wrong());
correct()上面的代码片段中的方法返回的是正确的值,15在这种情况下。wrong()但是,该方法返回undefined。大多数其他语言不是这种情况。
correct()
15
wrong()
undefined
但是,以下函数是正确的,并返回正确的值。
function wrong() { return( 15); }
如果语法错误,它应该发出一些编译器错误,但不会。为什么会这样?
从技术上讲,JavaScript中的半冒号是可选的。但是实际上 , 如果它认为缺少某些换行符, 它只会为您插入它们 。但是它为您带来的决定并不总是您真正想要的。
return后面跟着新行的语句告诉JS解释器,此后应插入一个半冒号return。因此,您的实际代码是这样的:
return
function wrong() { return; 15; }
这显然是错误的。那为什么行得通呢?
好了,我们在这里以open开头(。当它找到新行时,JS知道我们处于表达式的中间,并且足够聪明,在这种情况下不会插入任何分号。
(