我在java脚本中有两个相同返回类型的函数但返回类型不同。在
下使用snipped id的代码function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return
{
bar: "hello"
};
}
调用函数..
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
输出结果....
foo1 returns:
Object {bar: "hello"}
foo2 returns:
undefined
答案 0 :(得分:5)
那是因为JavaScript解释
return
{
bar: "hello"
};
作为return
语句后跟块创建(在运行时被忽略)。不是“返回一个对象”。我真的不知道为什么JavaScript开发者会做出这样的决定。
无论如何,ASI在;
之后插入return
,产生等效代码:
return;
{
bar: "hello"
};
return
之后的换行是罪魁祸首。如果您想要退货,请不要使用它。
答案 1 :(得分:4)
这里自动插入分号。其余的代码永远不会到达。
function foo2()
{
return // get a automatic semicolon insert here
{
bar: "hello"
};
}
答案 2 :(得分:0)
一个javascript你可以不用分号但它会自动添加分号,这就是为什么你得到未定义的Refer this
function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return{
bar: "hello"
};
}
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());