小提琴here
为了好奇,我正在寻找一些非常高级的逻辑来帮助函数。我希望能够在_if
函数中使用其参数执行函数,而无需提前定义_callback
之类的内容?我觉得我在这里错过了一些东西。
var _if = function(predicate,callback){
if(predicate){
callback(); //callback(arguments) is not arguments for callback
}
};
var text = 'some text';
_if(1 > 0,function(){
console.log('hello world'); //hello world
});
_if(1 > 0,function(text){
console.log(text); //undefined
});
//define callback for this situation
var _callback = function(x){
console.log(x);
}
_if(1 > 0,function(){
_callback(text); //some text
});
答案 0 :(得分:1)
不确定你想要什么,但也许这会有所帮助:
您也可以这样调用您的函数:
_if(1 > 0,_callback.bind(null,text)); //null is the value of this
_if(1,function(text){
console.log(text); //this way not undefined
}.bind(null,text));
1)这是因为logic的JavaScript。在其他版本中,如果您使用let text = 'some text';
- ref
2)null
是函数的这个值,(更多信息here)但我认为如果你需要在函数中使用它,你也可以传递this
({ {1}}将在非严格模式下自动替换为全局对象。这就是为什么你可以在函数中使用null
。 - ref)
答案 1 :(得分:1)
为什么不将回调函数的参数作为_if
上的额外参数?
var _if = function (predicate, callback, context) {
if (predicate) {
var callbackArgs = [].slice.call(arguments, 3);
callback.apply(context || null, callbackArgs);
}
};
// Usage:
_if(true, console.log, console, "text");