给定函数外部的Javascript访问参数
想象一下下面的代码:给定函数外部的Javascript访问参数,javascript,functional-programming,arguments,anonymous-function,Javascript,Functional Programming,Arguments,Anonymous Function,想象一下下面的代码: fruitMixer = function(fruitHandler, action){ // get the given arguments in fruitHandler var args = fruitHandler.arguments; // retrieve these arguments outside the fruitHandler function if(args[0] == undefined) return;
fruitMixer = function(fruitHandler, action){
// get the given arguments in fruitHandler
var args = fruitHandler.arguments;
// retrieve these arguments outside the fruitHandler function
if(args[0] == undefined) return;
var action = args[0]['action'];
// do something if it wants to mix
if(action == 'mix'){
fruitHandler(args);
}else{
// do other stuff
}
}
fruitMixer(function({
'action': 'mix',
'apples': 3,
'peaches': 5}
){
// mix the fruits
});
我试图做的是获取给定匿名函数之外的参数。有了这些参数,您就可以执行上述操作
我知道这段代码无法工作,因为在函数本身之外无法访问参数。但我想知道是否有其他方法或解决方法可以做到这一点?显而易见的做法是将处理程序与处理程序参数分开
fruitMixer = function(fruitHandler, fruitHandlerArgs) {
//do stuff here
//call the handler, passing it its args
fruitHandler(fruitHandlerArgs);
}
fruitMixer(function() {
//mix the fruits
}, {
arg1: 'some val',
arg2: 'some other val'
});
我可能不完全理解你的问题。但是,在JavaScript中,您可以在函数范围方面做一些很酷的事情:
var fruitMixer = function () {
var arg1 = this.arg1,
arg2 = this.agr2;
if (arg1 is something) {
} else {
arg2('something else');
}
}
fruitMixer.call({arg1: 'some val', arg2: function (value) {
// handle value
}
})
因此,您可以通过调用将上下文传递到函数中
对我来说,这似乎是一个合理的模式问题。但是。。。如果你给匿名函数参数,那么你调用它。它应该运行并返回。。。无论什么当调用时。您的示例语法不合法。请稍候。。。您是否有可能尝试实施该计划?下面是一个我在快速搜索后发现的示例:我知道语法是非法的,我只是想知道访问这些参数是否可行(我想不会),但我喜欢看到一些创造性的解决方案尝试做同样的事情