javascript - 为什么新行上的 return 语句不返回任何值?
问题描述
考虑以下情况:
function func1() {
return {
hello: "world"
};
}
function func2() {
return
{
hello: "world"
};
}
console.log(func1());
console.log(func2());
第一个函数func1()
将返回对象{ hello: "world" }
,但第二个函数func2()
将返回undefined
。这是为什么?我的猜测是返回值需要与return
关键字在同一行。我在这里不知道什么“规则”?
解决方案
“规则”是自动分号插入。
return
本身就是一个有效的陈述,所以它被视为一个完整的陈述。从下一行开始的代码在语法上也是有效的(尽管在这种情况下它根本不被解释为对象,而是包含标签和由字符串文字组成的单个“语句”的代码块)。所以自动分号插入在这里开始,两者被视为单独的语句。
在它之后的行上开始的对象被简单地忽略。
推荐阅读
- angular - Angular - 找不到模块
- ios - 无法在 SwiftUI 的当前上下文中推断闭包类型
- java - 如何使用 javaFX Canvas 绘制图像模式
- clojure - 如果找到字符串“john”,则读取包含数据的文件并将前后 10 个字符的值打印到新文件中
- android - 无需用户交互即可启用通知访问
- angular - 如何禁用 Highstocks 中的数据分组(npm:Angular-highcharts)
- r - 具有多个日期时间的非 equi 连接
- python - 删除熊猫数据框中具有特定值的行
- reactjs - 使用不变性助手`update`时如何使用我的索引作为键
- laravel - 使用 Laravel 刀片语法进行引导选项卡和路由