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

rma*_*een 3 javascript node.js

使用节点v6.9.2运行此代码时会生成错误

var req = {}

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

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

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

zzz*_*Bov 8

自动分号插入已经转动

var req = {}
['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

var req = {}['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

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

(undefined).forEach(...) 得到评估,然后导致你看到的错误.


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

var req = {}
;['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)