例如
function a(){
return {
testing:1
};
}
function b(){
return
{
testing:1
};
}
在上面的代码中,函数 a()返回对象{testing:1},但是函数 b()返回undefined的值。这种行为背后的原因是什么?
是因为返回值从第二行开始吗?
答案 0 :(得分:1)
是的,因为发生了什么,因为当解释器运行b
函数并看到return
表达式附近时,它返回undefined
。
你有这个:
function b(){
return
{
testing:1
};
}
代码被解释:
function b(){
return; //Returning undefined
{
testing:1
};
}
答案 1 :(得分:1)
return
语句受automatic semicolon insertion (ASI)影响。 在return关键字和表达式之间不允许使用行终止符。为避免此问题(防止ASI),可以使用括号:
返回( // return语句。 );
function a(){
return ({
testing:1
});
}
function b(){
return(
{
testing:1
});
}
console.log(a());
console.log(b());
答案 2 :(得分:1)
JavaScript有时可能很时髦,但是仅在函数末尾添加return
会返回,只是不返回/ null / undefined。我认为您的情况是return和{之间的空间导致了它无论如何都会返回,尽管那里有数组。
像您的function a()
一样键入:
function a(){
return {
testing:1
};
}
function b(){
return {
testing:1
};
}
答案 3 :(得分:0)
的确。 return语句受分号自动插入的影响,并且return关键字和表达式之间不允许使用行终止符。实际上,您的第二个功能可以重写为
function b() {
return;
{testing:1};
}