function foo1() {
return {
bar: "hello"
};
}
function foo2() {
return
{
bar: "hello"
};
}
console.log(foo1());
console.log(foo2());
即使代码看起来相同,我能解释为什么这两个函数会打印出不同的结果吗?
答案 0 :(得分:9)
自动分号插入
遇到
continue
,break
,return
,throw
或yield
令牌且遇到 LineTerminator 时在下一个标记之前,会在continue
,break
,return
,throw
或yield
标记之后自动插入分号。
所以代码将变成这样
function foo2() {
return; // Note the `;` after `return`
{
bar: "hello"
};
}
return
语句终止,然后在那之后有一个对象,它基本上是无法访问的代码。由于return
语句未明确返回任何内容,因此将返回undefined
。