我编写了一个函数,可能会将未知数量的函数作为参数,但是当一个或多个函数也采用参数时,无法确定如何使其工作。
以下是我想要实现的一个简单示例:
function talk(name) {
console.log('My name is ' + name);
var callbacks = [].slice.call(arguments, 1);
callbacks.forEach(function(callback) {
callback();
});
}
function hello() {
console.log('Hello guys');
}
function weather(meteo) {
console.log('The weather is ' + meteo);
}
function goodbye() {
console.log('Goodbye');
}
// I would like to be able to do the following:
//talk('John', hello, weather('sunny'), goodbye);
答案 0 :(得分:8)
您可以传递一个匿名函数,该函数可以使用所需参数调用该函数
talk('John', hello, function(){
weather('sunny')
}, goodbye);
function talk(name) {
console.log('My name is ' + name);
var callbacks = [].slice.call(arguments, 1);
callbacks.forEach(function(callback) {
callback();
});
}
function hello() {
console.log('Hello guys');
}
function weather(meteo) {
console.log('The weather is ' + meteo);
}
function goodbye() {
console.log('Goodbye');
}
talk('John', hello, function() {
weather('sunny')
}, goodbye);

答案 1 :(得分:2)
talk('John', hello, weather.bind(null, 'sunny'), goodbye);
在这种情况下,.bind
本质上是返回一个带有一些绑定参数的函数 - 非常类似于Arun的答案,尽管你可能会认为这种方法更简洁/可读。