JavaScript中不可靠的返回语句
以下函数工作并执行其预期任务-返回指定的所需值JavaScript中不可靠的返回语句,javascript,function,Javascript,Function,以下函数工作并执行其预期任务-返回指定的所需值 function returnValue() { return( "value"); } 只将返回值拆分为新行 如果按如下方式删除这对括号,则返回undefined function returnValue() { return "value"; } 我使用的IDE发出如下警告 代码没有副作用 似乎“value”不是return语句本身的一部分 为什么它们的行为都不同?因为在Javas
function returnValue() {
return(
"value");
}
只将返回值拆分为新行
如果按如下方式删除这对括号,则返回
undefined
function returnValue() {
return
"value";
}
我使用的IDE发出如下警告
代码没有副作用
似乎“value”不是return
语句本身的一部分
为什么它们的行为都不同?因为在Javascript中,语句可以用换行符而不是分号终止。分号基本上是自动插入的,但仅在结果可以是完整语句的情况下插入
返回
本身是有效的,但随后您的函数将不返回任何内容和的“值”代码>没有副作用
另一方面,第一个例子根本无法用这种方式解析,因为该行在括号中间结束。
ECMA-262标准文件§7.9.1中描述了这些规则。自动分号插入是原因。当要返回的表达式从return
关键字的单独一行开始时,将在return
语句后插入分号。分号在许多情况下是可选的,但这不是其中之一
所以
最终成为/被解释为
function returnValue() {
return; // <- semicolon inserted here
"value";
}
函数returnValue(){
return;//Javascript会在return
之后自动插入分号
阅读更多信息:这是因为JavaScript会自动在返回行的末尾添加分号,因此在第二个示例中,它基本上就好像只说了返回;
@Shai:类似,但显然不是重复的。相关:
function returnValue() {
return; // <- semicolon inserted here
"value";
}