我正在关注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')
});