2016-07-01 15 views
0

在Java/C/C++中(除了Python,我能想到的所有其他語言)空白都被忽略。在javascript中是空白重要的

我剛剛花了好幾個小時試圖弄清楚爲什麼我在返回語句中出現錯誤。答案是空白。

所以這裏是我認爲功能上相同的兩個代碼片段。

return { a:b, c:d}; 

return 
{ 
a:b, 
c:d 
}; 

但我現在明白,第一個工程,但第二個拋出錯誤的C:D線。

有人可以解釋爲什麼這些在語法上不等同?

+0

好的,謝謝。已搜查,但我顯然沒有提出正確的問題。 –

回答

3

這裏的問題是JavaScript有一個叫做"feature"自動分號插入

所以,你的第二個片段實際上正在這樣執行(注意return後的分號):

return; 
{ 
a:b, 
c:d 
}; 

基本上,你正在返回undefined,而非對象文本。

JavaScript有所謂的「壞部分」,你跑到其中一個。我強烈建議閱讀this book關於這個問題。

有關自動分號插入的更多信息,請參閱this article

如果你還是想你類似的代碼格式,以您原本的東西,這可能是不會咬你最接近:

return { 
a:b, 
c:d 
}; 
+0

作爲一個方面說明,你可以安全地用'return('後面跟着你的對象用換行符(沒有最後的分號),然後'')開始它;' – Arnauld

+0

我的上帝我已經討厭JS了。我越用它看起來越糟糕。但是,感謝您的及時迴應。幸運的是,我必須做更少和更少的Javascript。我們將開發人員移至Vaadin,這實際上消除了對HTML,Javascript和不需要太多CSS的需求。只有Vaadin的問題是我們現在沒有足夠的測試人員。開發人員的產出幾乎翻了一番。但JavaScript很酷,所以我知道什麼:D –