2016-01-16 22 views
-3

比方說,我有一個函數需要2個參數,一個常規變量和一個函數。JavaScript匿名函數是否可以訪問與其一起傳遞的其他參數?

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

我可以在匿名函數的定義中使用varA嗎?如果我運行這個函數併爲varA傳遞一些東西,匿名函數是否知道varA的值是什麼?

+4

你試過嗎? – Quentin

+3

這是無效的語法。您必須指定標識符作爲參數。由於您在調用example(1,passedFunc)時傳入的函數是由外部定義的,所以不能從該函數中訪問'varA',因爲'varA'對'example'是本地的。 –

+0

函數定義應該有一個函數回調變量而不是函數定義。 '函數示例(varA,callback){}',您將不得不將必要的變量傳遞給回調函數 – Rajesh

回答

0

答案是NO!

你的定義不正確。

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

在函數的定義,你不知道的回調將是什麼樣子,所以它應該是:

function example(varA, callback){} 

現在,在下面的例子:

function test(varA){ 
 
    function notify(){ 
 
    console.log(varA); 
 
    } 
 
    notify(); 
 
} 
 

 
test(10)

varA is accessib樂,因爲它是在相同的範圍內,但如果你做這樣的事情:

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

相關問題