非常基本的JavaScript回调/闭包结构
我有以下代码:非常基本的JavaScript回调/闭包结构,javascript,callback,closures,Javascript,Callback,Closures,我有以下代码: var barfunction = function(foocallback){ foocallback('bar'); } var foofunction1 = function(){ var foovar = 'foo'; barfunction(function(barvar){ /*huge amounts of code */ console.log('f1' + foovar); consol
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。现在,我想将大量代码移到它自己的函数中,以保持foofunction的可读性,同时保持对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);
}
此场景的首选解决方案是什么?谢谢我只能看到两种解决方案:
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);
}
我认为解决方案1更好,因为如果
barcallback
需要访问foovar
,那么foovar
应该是它的参数之一。foocallback来自哪里?