非常基本的JavaScript回调/闭包结构
Very Basic JavaScript Callback/Closure Structure
我有这个代码:
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); }
-
在此上下文中,使 foovar 成为全局变量。
我认为解决方案1更好,因为,如果barcallback
需要访问foovar
,那么foovar
应该是它的论点之一。
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何告诉闭包javascript编译器不要混淆webkitAudioContext的方法名称
- Google闭包和生成的getters/ssetter
- 如何冻结函数's在闭包中的变量
- 如何使用继承创建类似谷歌闭包的结构
- 非常基本的JavaScript回调/闭包结构
- Google JavaScript 闭包:定义传递给许多函数的结构