Javascript 为什么这个函数返回未定义?

Javascript 为什么这个函数返回未定义?,javascript,Javascript,我不理解为什么下面的函数不返回{bar:hello},而是返回undefined function foo2() { return { bar: "hello" }; } 这是因为javascript的自动分号插入将其编译到下面 function foo2() { return; // notice the semi-colon here? { bar: "hello" }; } 自回归以来;调用时,函数终止而

我不理解为什么下面的函数不返回{bar:hello},而是返回undefined

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

这是因为javascript的自动分号插入将其编译到下面

function foo2() {
    return; // notice the semi-colon here?
    {
        bar: "hello"
    };
} 
自回归以来;调用时,函数终止而不转到下一行代码。 要使其正常工作,只需将开口支架放在返回后的正确位置{


你最好使用分号,而不是省略它们。想要知道原因吗?请查看JS引擎返回后插入的分号

function foo2() {
    return;
    {
        bar: "hello"
    };
}
换成这个就行了

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

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

回车后和大括号前有回车符。请尝试回车{相反。你可能想阅读JavaScript。请注意,这正是JS历史上创建的几乎每一个JS教程、样式指南、书籍等中所展示的ASI危险的确切例子。任何花了3秒钟学习JS的人都知道这一点。嗯,也许4秒钟…:-