function doSomething(numbers, doIt){
numbers.forEach(doIt(number));
}
var result = [];
var arr = [1,2,3,4];
doSomething(arr, function(num){
result.push(num);
})
console.log(result);
嗨,
为什么我从上面的代码中收到错误“数字未定义”? 数字应该是arr中的每个元素,为什么没有定义?
感谢。
答案 0 :(得分:1)
您的函数doSomething
必须像这样
function doSomething(numbers, doIt) {
numbers.forEach(doIt); // here you pass the function
}
答案 1 :(得分:0)
在你的函数中,在调用doIt
时检查数字的拼写,数字变量在任何地方都不可用,因此会抛出错误。
如果你想将doIt作为回调,你只需将其称为numbers.forEach(doIt);
答案 2 :(得分:0)
doIt(number)
执行函数doIt
,传递变量number
。在调用时,该变量显然不存在。
您真正想要的是将doIt
作为回调传递给forEach
,让forEach
执行该函数,并将其传递给一个数字。要做到这一点,你只需要:
function doSomething(numbers, doIt){
numbers.forEach(doIt);
}
答案 3 :(得分:0)
答案 4 :(得分:0)
function doSomething(numbers, doIt){
numbers.forEach(doIt);
}
var result = [];
var arr = [1,2,3,4];
doSomething(arr, function(num){
result.push(num);
})
console.log(result);
使用它代替,因为你已经在迭代数字数组并将函数作为第二个参数传递,这将在数字数组中执行num =>
每个项目。
答案 5 :(得分:0)
你需要将一个闭包传递给forEach来捕获number
变量以传递给doIt
,或者只是将doIt传递给forEach回调而不调用它。
捕获选项:
function doSomething(numbers, doIt){
numbers.forEach(function (number) {
doIt(number);
});
}
var result = [];
var arr = [1,2,3,4];
doSomething(arr, function(num){
result.push(num);
});
console.log(result);
传递回叫选项:
function doSomething(numbers, doIt){
numbers.forEach(doIt);
}
var result = [];
var arr = [1,2,3,4];
doSomething(arr, function(num){
result.push(num);
});
console.log(result);