在javascript中调用数组文字上的forEach时出错

时间:2017-06-06 01:53:09

标签: javascript node.js

当我使用node v6.9.2

运行它时,此代码会生成错误
var req = {}

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

错误是:TypeError: Cannot read property 'forEach' of undefined

为什么会这样?我正在做的事情似乎没有任何语法上的错误。我注意到,如果我在var req = {}行之后添加一个分号,则错误消失,但我仍然不明白为什么因为我认为只要每个语句在一个单独的行上,半冒号在JavaScript中是可选的

1 个答案:

答案 0 :(得分:5)

自动分号已插入

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

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

当然{}不包含'bar'属性(因为'foo', 'bar'评估为'bar')。

(undefined).forEach(...)会被评估,然后会导致您看到错误。

如果您依赖ASI,前缀行的常见做法是以[]()开头的分号:

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