我试图翻转传递给另一个函数的函数的参数:
function dash(a,b) {
return a + " - " + b;
}
function flipArgs(fn) {
return fn;
}
flipArgs(dash)(1,2);
目前它返回" 1 - 2",我需要返回" 2 - 1"。如何访问传递给我的" flipArgs"功能
答案 0 :(得分:2)
你可以这样做:
function flipArgs(fn) {
return function(){
return fn(arguments[1], arguments[0]);
}
}
当然,根据您的需要,您可以使用更大的交换,或者测试arguments.length
。
答案 1 :(得分:2)
@dystroy答案很棒,但有一种更通用的方式,请看一下:
function dash(a,b,c) {
return a + " - " + b + " - " + c;
}
function flipArgs(fn) {
return function(){
return fn.apply(this, Array.prototype.reverse.call(arguments));
}
}
var r = flipArgs(dash)(1,2,3);
console.log(r); // 3 - 2 - 1
JSFiddle:http://jsfiddle.net/u3f4t919/1/