JavaScript匿名函数是否可以访问与其一起传递的其他参数?

时间:2016-01-16 09:53:11

标签: javascript

假设我有一个带有2个参数的函数,一个常规变量和一个函数。

function example(varA, function(){
  //do something with varA?
})

我可以在匿名函数的定义中使用varA吗?如果我运行此函数并为varA传递一些内容,匿名函数是否知道varA的值是什么?

1 个答案:

答案 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);
})