有人可以帮助我 - 为什么我们在JS片段中有这种行为?
var foo = function() {
return {
hi: console.log("foo")
}
}
var foo1 = function() {
return
{
hi: console.log("foo1")
}
}
foo();
foo1();
为什么只打印“foo”?
修改 好吧,这是因为自动分号插入,但是
我们有办法强迫JS不执行这种情况吗?
我的意思是,我们可以做一些会在这里引发错误的事情吗?
EDIT2
看起来最好的建议是JShint - 我问here
答案 0 :(得分:8)
你已经点击了JavaScript的automatic semi-colon insertion。你的第二个块相当于:
var foo1 = function(){
return;
{
hi:console.log("foo1")
}
}
IE它根本没有返回对象文字(因此console.log
没有运行) - 它只是返回undefined
。
答案 1 :(得分:2)
在foo1中,函数在评估对象之前返回。如果您检查foo1()
的输出,则不会返回任何内容这就是大多数javascript样式指南建议对象在与return
关键字相同的行上打开的原因。