以下是我得到的代码 Cannot read property 'forEach' of undefined
.
const print2 = function(x, y) {
console.log(x*y)
}
[1,2,3,4].forEach( x => print2(x, 20) )
让我知道我在这里做错了什么,虽然如果我这样做 - 。
function print2(x, y) {
console.log(x*y)
}
[1,2,3,4].forEach( x => print2(x, 20) )
这很好用。
由于函数后面没有分号,这段代码被解释为以下内容。
const print2 = function(x, y) {
console.log(x*y)
}[1,2,3,4].forEach( x => print2(x, 20) )
这意味着它正在尝试向函数索引。在函数后或数组文字前添加一个分号。
const print2 = function(x, y) {
console.log(x*y)
};
[1,2,3,4].forEach( x => print2(x, 20) )
或者
const print2 = function(x, y) {
console.log(x*y)
}
;[1,2,3,4].forEach( x => print2(x, 20) )
更多关于Javascript自动分号插入的内容请点击这里。JavaScript自动分号插入(ASI)的规则是什么?
你需要在变量声明的末尾加上一个分号。
const print2 = function(x, y) {
console.log(x*y)
};
[1,2,3,4].forEach( x => print2(x, 20) )
如果没有分号,它将被视为
const print2 = function(x, y) {
console.log(x*y)
}[1,2,3,4].forEach( x => print2(x, 20) )
[1,2,3,4]
被解释为一个属性访问器,而不是一个数组,并且逗号操作符返回最后一个值。4
. 由于该函数没有一个 4
属性,该属性返回 undefined
,然后你试着打电话 .forEach()
在这一点上。
你的后面少了个分号 FunctionExpression
.
const print2 = function(x, y) {
console.log(x*y)
}
[1,2,3,4].forEach( x => print2(x, 20) )
改为
const print2 = function(x, y) {
console.log(x*y)
};
[1,2,3,4].forEach( x => print2(x, 20) )
而它的工作。
我认为,与其说是 [1,2,3,4].forEach( x => print2(x, 20) )
,你应该使用一个变量,比如 array.forEach(x => print2(x, 20));
例如下面的代码。
let array = [1,2,3,4];
const print2 = function(x, y) {
console.log(x*y);
};
array.forEach( x => print2(x, 20) );