This code generates an error when I run it with node v6.9.2
var req = {}
['foo', 'bar'].forEach(prop => {
console.log("prop: " + prop)
});
The error is: TypeError: Cannot read property 'forEach' of undefined
Why would that be? There doesn't seem to be anything syntactically wrong with what I'm doing. I note that if I add a semi-colon after the var req = {}
line the error disappears, but I still don't understand why since I thought semi-colons were optional in JavaScript as long as each statement was on a separate line.
Automatic semicolon insertion has turned
var req = {}
['foo', 'bar']
into
var req = {}['foo', 'bar']
and of course {}
doesn't contain a 'bar'
property (because 'foo', 'bar'
evaluates to 'bar'
).
(undefined).forEach(...)
gets evaluated, which then leads to the error that you're seeing.
If you're relying on ASI, it's common practice to prefix lines beginning with []
or ()
with a semicolon:
var req = {}
;['foo', 'bar']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With