我不明白爲什麼下面的函數不返回{bar:「hello」},而是返回undefined。爲什麼這個函數返回undefined?
function foo2() {
return
{
bar: "hello"
};
}
我不明白爲什麼下面的函數不返回{bar:「hello」},而是返回undefined。爲什麼這個函數返回undefined?
function foo2() {
return
{
bar: "hello"
};
}
這是因爲它編譯爲以下,因爲JavaScript的自動分號插入。
function foo2() {
return; // notice the semi-colon here?
{
bar: "hello"
};
}
而且,由於return;
被調用時,函數終止而不要去的下一行代碼。 爲了讓它正常工作,只需在return
之後將右括號正確地放在return {
之間
您最好使用分號而不是忽略它們。想要理由?檢出Dangers of Javascript's automatic semicolon insertion
請注意,這是幾乎所有JS教程,樣式指南,書籍等在JS歷史中創建的ASI危險的*精確*示例。任何花費3秒時間學習JS的人都知道這一點。 – 2014-12-05 05:32:20
嗯,_maybe_ 4秒... :-) – sherb 2014-12-06 00:08:47
'return'之後,在大括號之前有一個回車符。嘗試'返回{'而不是。 – sherb 2014-12-05 05:30:21
您可能想要在JavaScript中閱讀[自動分號插入](http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi)。 – Ben 2014-12-05 05:31:48