访问作为参数传递的函数的参数

时间:2014-10-02 09:26:00

标签: javascript

我试图翻转传递给另一个函数的函数的参数:

function dash(a,b) {
  return a + " - " + b;
}

function flipArgs(fn) {
  return fn;
}

flipArgs(dash)(1,2);

目前它返回" 1 - 2",我需要返回" 2 - 1"。如何访问传递给我的" flipArgs"功能

2 个答案:

答案 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/