我有这段代码:
var barfunction = function(foocallback){
foocallback('bar');
}
var foofunction1 = function(){
var foovar = 'foo';
barfunction(function(barvar){
/*huge amounts of code */
console.log('f1' + foovar);
console.log('f1' + barvar);
});
}
foofunction1();
匿名内联函数可以访问foovar并记录foo,bar。现在我想将大量代码移动到它自己的函数中以保持功能可读,同时保持对foovar的引用。
var barcallback = function(barvar){
/* huge amounts of code */
/* need foovar here */
console.log('f2' + barvar);
}
var barfunction = function(foocallback){
foocallback('bar');
}
var foofunction2 = function(){
var foovar = 'foo';
barfunction(barcallback);
}
此方案的首选解决方案是什么?谢谢
答案 0 :(得分:0)
我只能看到两种解决方案:
在函数中添加另一个参数
var barcallback = function(barvar, foovar){
console.log('f1' + foovar);
console.log('f2' + barvar);
}
var barfunction = function(foocallback, foovar){
foocallback('bar', foovar);
}
var foofunction2 = function(){
var foovar = 'foo';
barfunction(barcallback, foovar);
}
在此上下文中将foovar设为全局变量。
我认为解决方案1更好,因为如果barcallback
需要访问foovar
,则foovar
应该是其参数之一。