js:无法将参数传递给setTimeOut中的匿名函数
js: unable to pass parameter to anonymous function in setTimeOut
我似乎无法将参数作为setTimeOut调用的参数传递给匿名函数。这是代码
http://jsfiddle.net/5xg5d6pp/
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);
}
相关文章:
- setTimeout可以与闭包内的函数一起使用吗
- setTimeout函数能否在其前面的代码执行之前激发
- 在setTimeout中调用相同的函数
- 将jQuery对象传递到setTimeout递归函数中
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- JS:setTimeout函数的UI计数
- settimeout调用的函数未结束
- 调用setTimeout内部的函数时发生引用错误
- Jasmine:测试setTimeout函数会抛出一个错误
- setTimeout()在忽略间隔的情况下重复调用函数
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- 重复调用的同一函数会重置setTimeout内部函数
- 如何在 javascript 中测试 setTimeout 内部的函数
- setTimeout是否创建函数实例
- 通过fn.apply或fn.bind将函数传递给setTimeout
- setTimeout() 函数在超时持续时间之前调用
- Javascript/Jquery setTimeout 函数不适用于长 html
- 如何让 setTimeout 函数运行,然后停止使用循环
- 嵌套回调函数setTimeout();
- Javascript函数setTimeout和setIntervall不起作用