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
,并在该功能范围内定义了一个匿名函数(回调(。匿名回调函数可以访问周围函数范围中的所有内容。