为什么返回的值应该与JavaScript中的return语句在同一行
Why does the value returned should be on the same line as the return statement in JavaScript?
以下内容无法正常工作:
function test()
{
// Returns undefined, even though I thought it would return 1
return
1;
}
显然,该值应该在同一行:return 1;
。为什么我可以写之类的东西
// Assigns 1 to foo just fine
foo
=
1;
但是return
语句的工作方式不同?
它明确地是语言规范的一部分。如果不是,仍然会有return
问题:
if (something()) return
counter = counter + 1;
如果没有分号插入规则,丢失的分号将触发行为,这种行为(我认为)与现在return
语句在换行符中拆分时发生的情况一样奇怪。
如果返回表达式不在同一行,Javascript会自动在"return"语句后插入分号。
JavaScript有一种通过自动插入分号来纠正错误程序的机制。不要依赖于此。它可以掩盖更严重的错误。它有时会在不受欢迎的地方插入分号。请考虑在return语句中插入分号的后果。如果return语句返回值,则该值表达式必须与return在同一行开始:
return
{
status: true
};
这似乎返回了一个包含状态成员的对象。不幸的是,分号插入会使它变成一个语句返回undefined。没有分号插入导致的警告对节目的曲解。如果{位于前一行的末尾,而不是下一行的开头:
return {
status: true
};
引用自本文,引用Douglas Crockford的JavaScript:The Good Parts。版权所有2008 Yahoo!股份有限公司,978-0-596-51774-8。
JavaScript在某些情况下会插入分号,试图将原本无效的程序变成有效的程序。特别是,return
语句就是所谓的"受限生产"的一个例子——在值之前不允许在返回后有换行符,因此它被转换为return;
,下面的值成为一个单独的语句。
在的情况下
foo
=
1
这不是一个受限制的生产,而且=
或1
在该位置都不是非法标记,因此没有试图在前一行的末尾插入分号。
JavaScript使用分号插入!对于你忘记用分号关闭的每一行,JS都会自动插入!在这种情况下:
return // auto semicolon insertion
{ // that's fine
1; // yey here's one
} // ok, np
// bye bye
这意味着在JavaScript中,{
左括号的使用不像在其他语言中那样由开发人员选择。你必须遵守规则:
return {
1;
}
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 自动修复”;语句前缺少分号“;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 动态插入的表:JQuery未检测到最后一行
- 如何在 API 调用后和 if 语句中启用提交按钮
- 是“;x==a||b”;以及“;x==a||x==b”;JavaScript中的等效语句
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何在Angular UI网格中选择下一行
- Javascript 一行 If..还..否则如果语句
- Firefox ONLY不会在if语句中运行一行javascript代码,但会运行其他行——chrome和safari运
- Javascript复杂的一行if语句
- 将具有 2 个要求的 Javascript if 语句设置为一行
- if和ifnot在同一行中删除语句
- 嵌套在一行中的 if 语句
- 为什么当返回值在另一行时,Javascript返回语句不能工作?
- 在VS Code中使用美化插件将case语句留在一行
- 需要一种优雅的方式来根据输入改变一行if语句的返回结果
- 在一行中写两个案例的if-else语句的短缺
- 为什么返回的值应该与JavaScript中的return语句在同一行