为什么当返回值在另一行时,Javascript返回语句不能工作?
Why doesn't a Javascript return statement work when the return value is on a new line?
考虑以下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);
}
如果语法错误,它应该发出一些编译器错误,但它没有。为什么会发生这种情况?
从技术上讲,javascript中的分号是可选的。但实际上,如果认为某些换行符缺失,它只是为您插入。但它为你做的决定并不总是你真正想要的。
和return
语句后面的新行告诉JS解释器在return
之后应该插入一个分号。因此你的实际代码是这样的:
function wrong()
{
return;
15;
}
这显然是错误的。那么为什么这个方法有效呢?
function wrong()
{
return(
15);
}
这里我们用开放的(
开始一个表达式。当JS找到新行时,它知道我们在一个表达式的中间,并且在这种情况下,它足够聪明,不会插入任何分号。
如果该行return
语句之后没有任何内容,则将在那里插入;
,这将导致不带任何值返回=>返回值为undefined
。
见:http://lucumr.pocoo.org/2011/2/6/automatic-semicolon-insertion/
javascript的命令行不能被换行符打断。但是函数的参数可以被打破,不推荐(在你的例子中)。
相关文章:
- Javascript返回值只在循环中返回一次
- ascii输入键通过firefox中的javascript返回0
- 从函数JavaScript返回不可变数组/对象
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- Javascript返回错误的Date值(NodeJS)
- JavaScript:返回对象的函数
- 使用javascript返回
- JavaScript返回奇数
- JavaScript:返回NaN(第2部分)
- 是我的第三方JavaScript返回html还是只是一个空对象
- 如何从javascript返回输出json
- Javascript:返回对象
- 当我将参数设置为对象时,JavaScript返回TypeError
- 获取页面宽度Javascript-返回PHP变量
- 使用纯JavaScript返回并嵌入图像,如php
- 为什么 javascript 返回对象位置 true 或 false
- JavaScript - 返回承诺和/或调用回调
- 将 javascript 返回值插入 html
- Javascript 返回 OR(||) 操作的字符串