作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 JavaScript 编写柯里化(Currying)函数,内部函数不会更新数组 args 的值:
var myCurry=function(fn)
{
var len=fn.length;
var _slice=Array.prototype.slice;
var args=_slice.call(arguments,1);
console.log(args.length);
return function next()
{
var rem=_slice.call(arguments,0)
args.concat(rem);
console.log(args.length);
if(len<=args.length)
return fn.apply(null,args);
else
return next;
}
}
我这样调用它:
var _sum=myCurry(sum,2);
var res=_sum(2);
var res2=res(3,4);
console.log(res2);
这会一直返回函数 next,可能是因为数组未更新。如何修复此错误以确保函数正常工作?
最佳答案
这是因为 .concat()
不会改变数组。如果你想改变原件,请改用 .push()
。
args.push.apply(args, rem);
或者如果你不关心原来的是否被替换,只需分配 .concat()
的返回值即可
args = args.concat(rem);
关于javascript - 柯里化(Currying)函数不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896353/
我是一名优秀的程序员,十分优秀!