当我使用node v6.9.2
运行它时,此代码会生成错误var req = {}
['foo', 'bar'].forEach(prop => {
console.log("prop: " + prop)
});
错误是:TypeError: Cannot read property 'forEach' of undefined
为什么会这样?我正在做的事情似乎没有任何语法上的错误。我注意到,如果我在var req = {}
行之后添加一个分号,则错误消失,但我仍然不明白为什么因为我认为只要每个语句在一个单独的行上,半冒号在JavaScript中是可选的
答案 0 :(得分:5)
自动分号已插入
var req = {}
['foo', 'bar']
到
var req = {}['foo', 'bar']
当然{}
不包含'bar'
属性(因为'foo', 'bar'
评估为'bar'
)。
(undefined).forEach(...)
会被评估,然后会导致您看到错误。
如果您依赖ASI,前缀行的常见做法是以[]
或()
开头的分号:
var req = {}
;['foo', 'bar']