Javascript 作为参数传递的函数的访问参数
我试图翻转传递给另一个函数的函数的参数:Javascript 作为参数传递的函数的访问参数,javascript,Javascript,我试图翻转传递给另一个函数的函数的参数: function dash(a,b) { return a + " - " + b; } function flipArgs(fn) { return fn; } flipArgs(dash)(1,2); 目前它返回“1-2”,我需要返回“2-1”。如何访问传递给“flipArgs”函数的参数?您可以执行以下操作: function flipArgs(fn) { return function(){ return fn(arg
function dash(a,b) {
return a + " - " + b;
}
function flipArgs(fn) {
return fn;
}
flipArgs(dash)(1,2);
目前它返回“1-2”,我需要返回“2-1”。如何访问传递给“flipArgs”函数的参数?您可以执行以下操作:
function flipArgs(fn) {
return function(){
return fn(arguments[1], arguments[0]);
}
}
当然,根据您的需要,您可以使用更大的交换,或者测试参数。length
您可以这样做:
function flipArgs(fn) {
return function(){
return fn(arguments[1], arguments[0]);
}
}
当然,根据您的需要,您可以使用更大的交换或测试
参数。length
@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
jshiddle:@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
jshiddle:@FezVrasta-oups,fixed@FezVrastaoups,fixed您应该对参数进行切片,然后将其反转。修改伪数组参数会导致性能问题,因此不建议这样做。它在严格模式和非严格模式下的工作方式也不一样。您应该对参数进行切片,然后将其反转。修改伪数组参数会导致性能问题,因此不建议这样做。它在严格模式和非严格模式下也不一样。