通过创建回调默认值parm使本地变量可访问


function foo1(var1, var2) {        
    foo2(var1, function(result){
        console.log(var2)             
    });   
}         

据我了解,上面的代码将返回typeError,说VAR2不确定。我发现的一般解决方案是将所需的变量(VAR2(传递给FOO2,然后更改Foo2将VAR2发送到回调。我认为这将起作用,但更改FOO2以满足一个功能的需求,这不是一个很好的解决方案,因为它使FOO2失去了通用目的。

我认为做类似更改回调函数以将var2作为默认值包含的事情将解决:

function foo1(var1, var2) {
    foo2(var1, function(result, var2=var2){
        console.log(var2)             
    });   
} 

这样,当foo2调用传递回调函数时,一旦定义了默认值,就无需发送第三个parm。但这似乎不起作用。有人可以帮助我找到最佳方法吗?

我也许是在问一个基本问题,但是请记住,我对Node和JS World非常新。

您的代码会丢失错误的假设是错误的。console.log语句将打印var2的值。您可以在这里尝试:

function foo1(var1, var2) {        
    foo2(var1, function(result){
        console.log(var2)             
    });   
}         
function foo2(v1, callback) {
    callback('result');
}
foo1('var1', 'var2');

为什么var2不确定?因为它处于foo1函数的范围。在该功能范围内调用foo2,并在该功能范围内定义了一个匿名函数(回调(。匿名回调函数可以访问周围函数范围中的所有内容。

最新更新