为什么这个函数返回undefined?

时间:2014-12-05 05:28:39

标签: javascript

我不明白为什么以下函数不会返回{bar:" hello"}而是返回undefined。

function foo2() {
    return
    {
        bar: "hello"
    };
}

2 个答案:

答案 0 :(得分:5)

那是因为它因为javascript的自动分号插入而编译到下面。

function foo2() {
    return; // notice the semi-colon here?
    {
        bar: "hello"
    };
} 

自调用return;以来,函数终止而不转到下一行代码。 为了使其正常工作,只需将return后面的开始括号放在return {

使用分号比使用分号更好。想要理由吗?看看Dangers of Javascript's automatic semicolon insertion

答案 1 :(得分:1)

JS引擎在return之后插入分号。

function foo2() {
    return;
    {
        bar: "hello"
    };
}

改为这是好的

function foo2() {
    return {
        bar: "hello"
    };
}

关于自动分号插入,又名 ASI ,您可能需要阅读thisthisthis