回调函数里的arguments参数的问题,arguments是怎么显示的呢?
function curry(fn) {
var args = [],
n = fn.length,
g = 10;
return function core(g) {
var arg = [].slice.call(arguments);
args = args.concat(arg);
n -= arg.length;
return n === 0 ? fn.apply(null, args) : core;
}
}
var add4 = curry(function (a, b, c, d) {
return a + b + c + d;
});
console.log(add4(1, 2)(2)(3));
比如执行add4(1,2),到var arg = [].slice.call(arguments);
这时arguments=[1,2]
,core函数里也传了g
,为什么g
不在arguments
里呢?
刚开始我还以为这个回调函数里的arguments
装的是add4(1,2)
而不是[1,2]...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
执行
add4(1,2)
的时候,core 中的g = 1
,这里的 g 就是 add4 中传入的第一个参数 1,如果你想要等于 10 的那个 g,应该删掉这个参数 g,否则在因为已经找到变量为 g 的参数,就不会在去作用域链上去找 g 也就是等于 10 的那个 g 了.