![](/img/trans.png)
[英]How to pass parameter to an anonymous function defined in the setTimeout call?
[英]js: unable to pass parameter to anonymous function in setTimeOut
我似乎無法將參數傳遞給匿名函數作為setTimeOut調用的參數。 這是代碼
var arr = ["Just a test","I miss you so much darling #$%&%@;..\]]/"];
console.log(arr);
for(var c=0; c < arr.length; c++){
console.log(arr[c]);
//wait 1 sec for next loop
setTimeout(function(arr[c]) {
do_magic(arr[c]);
}, 1000);
}
function do_magic (passed_var){
console.log(passed_var);
}
當您執行此setTimeout(function(arr[c]) {
您正在定義一個新函數,並說我希望此函數接受名為“ arr [c]”的參數,這並不是說您要傳遞arr [c]並由於參數名稱中不能包含任何特殊字符而導致錯誤,您應該做的是在循環外部定義一個函數以避免循環閉合問題並將參數傳遞給該函數讓該函數為您創建setTimeout。請參閱循環內的JavaScript閉包-有關閉包的更多信息的簡單實際示例 ,還請閱讀此書以了解有關javascript函數的更多信息: http : //javascript.info/tutorial/functions-declarations-and -expressions
這是下面的正確代碼:
var arr = ["Just a test","I miss you so much darling #$%&%@;..\]]/"];
console.log(arr);
for(var c=0; c < arr.length; c++){
console.log(arr[c]);
setTimeoutFactory(arr[c]);
}
function do_magic (passed_var){
console.log(passed_var);
}
function setTimeoutFactory(text) {
setTimeout(function() {
do_magic(text);
}, 1000);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.