2017-06-06 78 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