假设我有一个带有2个参数的函数,一个常规变量和一个函数。
function example(varA, function(){
//do something with varA?
})
我可以在匿名函数的定义中使用varA吗?如果我运行此函数并为varA传递一些内容,匿名函数是否知道varA的值是什么?
答案 0 :(得分:0)
答案是否定的!
您的定义不正确。
function example(varA, function(){
//do something with varA?
});
在函数定义期间,您不知道回调的样子,因此它应该是:
function example(varA, callback){}
现在在下面的示例中:
function test(varA){
function notify(){
console.log(varA);
}
notify();
}
test(10)

varA
是可访问的,因为它在相同的范围内,但如果您执行以下操作:
function test(varA, callback){
callback();
}
test(10, function(){
// This will throw error, because there is no variable called varA
console.log(varA);
})

并且您必须将参数传递给回调。
function test(varA, callback){
callback(varA);
}
test(10, function(varA){
console.log(varA);
})