Javascript js:无法在setTimeOut中将参数传递给匿名函数
我似乎无法将参数作为setTimeOut调用的参数传递给匿名函数。这是密码Javascript js:无法在setTimeOut中将参数传递给匿名函数,javascript,settimeout,anonymous-function,Javascript,Settimeout,Anonymous Function,我似乎无法将参数作为setTimeOut调用的参数传递给匿名函数。这是密码 var arr=[“只是一个测试”,“我非常想你亲爱的#$%&%@.\]/”; 控制台日志(arr); 对于(var c=0;c
var arr=[“只是一个测试”,“我非常想你亲爱的#$%&%@.\]/”;
控制台日志(arr);
对于(var c=0;c 执行此操作时,设置超时(函数(arr[c]){
您正在定义一个新函数,并说我希望此函数接受一个名为“arr[c]”的参数,而不是说您希望传递arr[c]由于参数名称中不能包含任何特殊字符,因此会出现错误。您应该在循环外定义一个函数,以避免循环闭包问题,并将参数传递给该函数,让该函数为您创建setTimeout。有关闭包的详细信息,请参阅。也请阅读此部分以了解n有关javascript函数的详细信息:
以下是正确的代码:
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);
}
var arr=[“只是一个测试”,“我非常想你亲爱的#$%&%@.\]/”;
控制台日志(arr);
对于(var c=0;c
未捕获的语法错误:意外的标记[
…是的,因为我在匿名函数中添加了参数…如果我删除它,代码会工作,但是我在函数中根本得不到arr[c]值。Lol的可能重复解决方案似乎有点复杂。。。
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);
}