从函数返回对象无法正常工作

时间:2018-08-30 02:45:59

标签: javascript

例如

function a(){
    return {
        testing:1
    };
}

function b(){
    return 
    {
        testing:1
    };
}

在上面的代码中,函数 a()返回对象{testing:1},但是函数 b()返回undefined的值。这种行为背后的原因是什么?

是因为返回值从第二行开始吗?

4 个答案:

答案 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};
}