Javascript js:无法在setTimeOut中将参数传递给匿名函数

Javascript js:无法在setTimeOut中将参数传递给匿名函数,javascript,settimeout,anonymous-function,Javascript,Settimeout,Anonymous Function,我似乎无法将参数作为setTimeOut调用的参数传递给匿名函数。这是密码 var arr=[“只是一个测试”,“我非常想你亲爱的#$%&%@.\]/”; 控制台日志(arr); 对于(var c=0;c

我似乎无法将参数作为setTimeOut调用的参数传递给匿名函数。这是密码

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