有人能解释为什么换行符使返回语句在JavaScript中未定义吗
Can anyone explain why linebreaks make return statements undefined in JavaScript?
这已经是我痛苦的根源好几个小时了。有人能解释为什么会这样吗?
function x(){
return //when there's a line break it doesn't work
2;
};
alert(x());
function y(){
return 4; //when there's no line break it works
};
alert(y());
//Can anyone explain this?
我一直认为JavaScript不关心换行。如果您有ECMA官方文档的链接,我将不胜感激。谢谢
以下是用于自动分号插入的ECMAScript规则。相关章节为:
当遇到continue、break、return或throw令牌,并且在下一个令牌之前遇到LineTerminator时,会在continue、break、return或抛出令牌之后自动插入分号。
简而言之,您的代码被解析为:
return;
2;
与大多数其他语言不同,JavaScript试图通过在它认为你已经忘记的地方添加分号来"修复"你的代码。
Return语句就是这样一种情况——如果Return语句后面有换行符,它将被解释为Return;
JavaScript将return
后的一个换行符视为;
因此:
return
2;
2;
是无法访问的代码。
JavaScript中唯一的return
返回undefined
。就像没有return
的函数一样。
注:
the OptionalSemicolon grammar state can sometimes reduce to «empty»
相关文章:
- JavaScript未定义的函数外部JavaScript文件
- 函数中的Javascript未定义数组
- Javascript-未定义ReferenceError x(函数)
- JSON JavaScript 未定义的变量问题
- Javascript 未定义错误:引用错误:未定义 ALT
- Javascript 未定义函数错误
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- javascript:未定义获取对象
- JavaScript 未定义的变量从页面类中获取值
- Javascript:未定义不是函数错误
- Javascript 未定义的函数错误
- JavaScript“未定义提示符”引用错误
- Javascript未定义错误:“this”为null
- VS中出现JavaScript未定义错误
- Javascript未定义的变量为空
- 在regex拆分过程中会出现javascript未定义元素
- Javascript未定义、空字符串和if语句
- 使用prototype[javascript]未定义的结果
- 匿名函数中的JavaScript未定义变量
- JavaScript:未定义的值赋值