理解 JavaScript 中的 Return 语句:为什么换行会很棘手
在 JavaScript 中,return 语句用于终止执行一个函数并向调用上下文返回一个值。然而,当返回值放在新行上时,会出现一种奇怪的行为。
问题:损坏的返回语句
考虑以下代码片段:
<code class="javascript">function correct() { return 15; } function wrong() { return 15; } console.log("correct() called : " + correct()); console.log("wrong() called : " + wrong());</code>
在此示例中, Correct() 函数返回预期值 15,而 Right() 函数返回未定义。这是令人惊讶的,因为在大多数其他语言中,return 语句后跟一个新行仍然会返回正确的值。
原因:JavaScript 的自动分号插入
The理解这种行为的关键在于 JavaScript 的自动分号插入 (ASI) 功能。 ASI 是一种允许 JavaScript 在某些换行符处自动插入分号以确保代码有效执行的机制。
当 right() 中的 return 语句后跟换行符时,ASI 将其视为单独的语句。结果,代码被解释为:
<code class="javascript">function wrong() { return; 15; }</code>
由于第一个语句 (return;) 没有返回值,所以 error() 函数返回 undefined。
解决方案:将返回值括在括号中
以确保即使在新的情况下也能正确返回返回值行,需要将其括在括号中。通过这样做,可以防止 ASI 插入分号,并且 return 语句仍然有效。
<code class="javascript">function wrong() { return( 15); }</code>
在这种情况下,括号表示返回值是 return 语句的一部分。 ASI 没有插入分号,错误的() 函数现在按预期返回 15。
以上是为什么 JavaScript 中'return”语句后换行会导致'undefined”?的详细内容。更多信息请关注PHP中文网其他相关文章!