小编典典

当返回值换行时,为什么Java return语句不起作用?

javascript

考虑以下JavaScript:

function correct()

{

    return 15;

}



function wrong()

{

    return

          15;

}



console.log("correct() called : "+correct());

console.log("wrong() called : "+wrong());

correct()上面的代码片段中的方法返回的是正确的值,15在这种情况下。wrong()但是,该方法返回undefined。大多数其他语言不是这种情况。

但是,以下函数是正确的,并返回正确的值。

function wrong()
{
    return(
          15);
}

如果语法错误,它应该发出一些编译器错误,但不会。为什么会这样?


阅读 1088

收藏
2020-04-25

共1个答案

小编典典

从技术上讲,JavaScript中的半冒号是可选的。但是实际上 如果它认为缺少某些换行符, 它只会为您插入它们
。但是它为您带来的决定并不总是您真正想要的。

return后面跟着新行的语句告诉JS解释器,此后应插入一个半冒号return。因此,您的实际代码是这样的:

function wrong()
{
    return;
          15;
}

这显然是错误的。那为什么行得通呢?

function wrong()
{
     return(
           15);
}

好了,我们在这里以open开头(。当它找到新行时,JS知道我们处于表达式的中间,并且足够聪明,在这种情况下不会插入任何分号。

2020-04-25