我正在关注 http://eloquentjavascript.net/05_higher_order.html .我有以下代码
function findEven(number, body) {
for(var i = 0; i < number; i++) body(i)
}
function unless(test, then) {
if(!test) then();
}
findEven(10, function (n) {
unless(n%2, function (n) {
console.log(n, 'is even')
});
});
我的问题是,如果我将变量 n
传递给函数 unless
,它会将值“undefined
”打印到控制台。我不明白为什么函数 unless
没有访问其外部范围。有人可以解释一下原因吗?
最佳答案
看这里
function unless(test, then) {
if(!test) then();
}
这里
unless(n%2, function (n) {
console.log(n, 'is even')
});
unless
函数不会将任何内容传递给接受 n 的回调,因此 n 是未定义的。
可能只需从回调中删除 n
即可
unless(n%2, function () {
console.log(n, 'is even')
});
关于javascript - 将变量传递给高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229538/