[英]why does foo2() return undefined here?
为什么我在js中以下两个函数中没有得到相同的输出。
foo1 (){
return {
bar:"hello"
};
}
foo2 (){
return
{
bar:"hello"
};
}
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
原因是JS中的可选分号。
JS这样对待您的代码:
foo2 () {
return ;
{
bar:"hello"
};
}
JS中的许多分号是可选的。 有时这是一个优势(例如,参见代码打高尔夫球)。 但是在像您这样的其他情况下,这会导致意外错误。
在foo1()
您有一个{
在返回之后的开头,因此解析器将首先尝试查找相应的结尾}
。 但是,在foo2()
,解析器没有理由猜测,应该解析更多内容,因此它仅插入(可选)分号并按原样运行代码。 下一行中的对象是完全(语法上)有效的代码-没有理由隐式更改任何内容。
检查一下
function foo1() {
return {
bar: "hello"
};
}
function foo2() {
return {
bar: "hello"
};
}
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
工作?
如果是函数,请告诉它它是函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.