【发布时间】:2015-12-20 20:33:02
【问题描述】:
对于 javascript 闭包和回调,我对为什么命名的嵌套函数采用的参数与闭包的参数不同(从外部函数继承?)之间的区别感到困惑。例如:
var filter = function (collection, test) {
var newArray = [];
each(collection, function (value) {
if (test(value)) {
newArray.push(value);
}
});
return newArray;
};
过滤器函数对每个函数进行操作。 “值”参数(在每个中)对应于什么输入?回调函数的参数是否自动与过滤器的第一个参数对齐,因为它们都是各自函数的第一个参数?如果外部函数和内部函数都接受另一个参数,那么它们也会因为它们的位置而排列吗?这里的内部/外部函数之间的参数关系似乎与闭包的参数不同(闭包似乎接受了一个新参数;它的参数与外部的参数不对齐)例如:
var outer = function(par1, par2) {
var hold = par1 + par2;
function inner(par3) {
return par3 + par1 + par2;
}
return inner;
};
var closure = outer (5,4);
closure(2);
我看到内部函数是从外部函数返回的(当存储在另一个变量中时),并且将自己的参数与外部函数分开。
命名/建立函数是否从其封闭函数继承其参数对应关系?
回调函数是否采用自己的参数 - 与它们的封闭函数分开 - 因为它们是从该函数返回并保存到变量中的?
【问题讨论】:
标签: javascript parameters callback nested closures