Когда вы сделаете это setTimeout(function(arr[c]) {
Вы определяете новую функцию и говорить, что я хочу эту функцию, чтобы принять параметр, называемый «обр [с]», вы Арен» t говоря, что вы хотите передать arr [c], и потому что у вас не может быть никаких специальных символов в имени параметра, вы получите сообщение об ошибке. То, что вы должны сделать, это определить функцию вне цикла, чтобы избежать проблемы с закрытием цикла и передать параметр, позволяющий этой функции создать для вас setTimeout. Пожалуйста, см. JavaScript closure inside loops – simple practical example для получения дополнительной информации о закрытии. Также читайте это, чтобы узнать больше о яваскрипте функций: 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);
}
'Uncaught SyntaxError: Неожиданный маркер [' .... – davidkonrad
Да, потому что я добавил параметр в анонимная функция ... Если я удалю ее, код работает, но тогда я не получаю значения arr [c] внутри функции. – giorgio79
Возможный дубликат [JavaScript закрытия внутри петель - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Andreas