我有一个错误的理解,过滤器功能是向下功能问题的一个例子吗?我在源面板下使用 chrome 调试器,并在范围部分注意到了这一点。
过滤器函数参数cb
是闭包还是函数strainer
是闭包?我发现很难对网络上有关闭包和 funarg 问题的信息进行分类。我显然不明白 funarg 问题或闭包,需要帮助吗?
function strainer(collection, cb) {
return collection.reduce(function inner(acc, curr) {
if (cb(curr)) {
return acc.concat(curr);
}
return acc;
}, []);
}
function even(number) {
if (number % 2 === 0) {
return true;
}
return false;
}
var collection = [1, 2, 3, 4, 5];
strainer(collection, even);
背景:我的印象是返回到外部环境的私有变量创建了闭包,但示例看起来有些不同。
下面的燧石函数示例在引号函数的范围内具有封闭性。(我认为这是向上的 funarg 问题)
function quotes() {
var x = 'yabba dabba doo!';
return function flintstones() {
return x;
}
}
var fredSays = quotes();
fredSays();