首页 > web前端 > js教程 > 为什么 JavaScript 中'return”语句后换行会导致'undefined”?

为什么 JavaScript 中'return”语句后换行会导致'undefined”?

Susan Sarandon
发布: 2024-11-05 12:07:01
原创
378 人浏览过

Why Does a Line Break After a `return` Statement Cause `undefined` in JavaScript?

理解 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板