-3
比方說,我有一個函數需要2個參數,一個常規變量和一個函數。JavaScript匿名函數是否可以訪問與其一起傳遞的其他參數?
function example(varA, function(){
//do something with varA?
})
我可以在匿名函數的定義中使用varA嗎?如果我運行這個函數併爲varA傳遞一些東西,匿名函數是否知道varA的值是什麼?
比方說,我有一個函數需要2個參數,一個常規變量和一個函數。JavaScript匿名函數是否可以訪問與其一起傳遞的其他參數?
function example(varA, function(){
//do something with varA?
})
我可以在匿名函數的定義中使用varA嗎?如果我運行這個函數併爲varA傳遞一些東西,匿名函數是否知道varA的值是什麼?
答案是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);
})
你試過嗎? – Quentin
這是無效的語法。您必須指定標識符作爲參數。由於您在調用example(1,passedFunc)時傳入的函數是由外部定義的,所以不能從該函數中訪問'varA',因爲'varA'對'example'是本地的。 –
函數定義應該有一個函數回調變量而不是函數定義。 '函數示例(varA,callback){}',您將不得不將必要的變量傳遞給回調函數 – Rajesh