如何创建一个存储可以多次调用的函数参数的变量,而不是在我想调用它时重复相同的参数? (以下示例并非如此希望存储函数参数,但如果您有多个不同长度的参数可能会在多个位置使用,则会出现这种情况。非常便利)。
function showAlerts(alert1,alert2) {
console.log(alert1 + '\n' + alert2);
}
// I would like to be able to define a variable that can be called later
// doing it this way (obviously) just runs the function immediately
var alerts1 = showAlerts('test1','test2');
var alerts2 = [showAlerts('test3','test4')];
var alerts3 = ['test5','test6'];
if(0===1) {
alerts1;
} else if(1===0) {
alerts2;
} else {
showAlerts(alerts3);
}
答案 0 :(得分:6)
使用.bind()
:
var alerts1 = showAlerts.bind(undefined, "test1", "test2");
alerts1(); // note the () which are still necessary to call the function
.bind()
的第一个参数是调用函数时绑定到this
的值,这是大多数人使用.bind()
执行的操作。但是,任何其他参数都作为参数传递。
您仍然可以使用alerts1()
传递参数,它们将是第三,第四,第五等参数。
答案 1 :(得分:-2)
使用闭包,返回的内部函数将绑定参数。此外,它的跨浏览器也适用于不支持bind
function getShowAlertsFunc() {
var args = arguments
return function() {
for(var i=0; i<args.length; i++) {
console.log(args[i]);
}
}
}
用法
var alert1 = getShowAlertsFunc("john", "doe")
var alert2 = getShowAlertsFunc("jane", "doe")
var alert3 = getShowAlertsFunc("test", "abc", "123")
alert1()
alert2()