2017-06-06 43 views
2

,當我和節點v6.9.2運行該代碼生成錯誤的文字上錯誤調用的forEach數組在javascript

var req = {} 

['foo', 'bar'].forEach(prop => { 
    console.log("prop: " + prop) 
}); 

的錯誤是:TypeError: Cannot read property 'forEach' of undefined

爲什麼會是這樣?我在做什麼似乎沒有任何語法錯誤。我注意到,如果在var req = {}行之後添加分號,錯誤消失,但我仍不明白爲什麼,因爲我認爲只要每條語句都在單獨的行中,分號在JavaScript中是可選的。

+0

節點6.10.3似乎做工精細,只是FYI – DrC

回答

5

自動插入分號已經變成

var req = {} 
['foo', 'bar'] 

var req = {}['foo', 'bar'] 

,當然{}的不包含'bar'性質(因爲'foo', 'bar'計算結果爲'bar')。

(undefined).forEach(...)得到評估,然後導致您看到的錯誤。


如果你依靠ASI,這是常見的做法是前綴[]()以分號線:

var req = {} 
;['foo', 'bar'] 
+0

很有意思!我不知道ASI,它是傳播效應。謝謝! – rmacqueen