2014-12-06 37 views
0

我有这样的代码:非常基本的JavaScript回调/闭合结构

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,酒吧。现在我想将大量代码移入其自己的函数中,以保持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); 
} 

此方案的首选解决方案是什么?谢谢

+0

foocallback从哪里来? – 2014-12-06 11:49:24

回答

0

我只能看到两种解决方案:

  1. 添加另一个参数的功能

    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); 
    } 
    
  2. 让foovar在这方面的全局变量。

我认为解决方案1是更好的,因为,如果barcallback需要访问foovar,然后foovar应该是它的一个参数。