2017-01-08 1 views
1
var data = ["s","a"] 
    var asyncFunctionss = []; 

    for (var i in data) { 
     asyncFunctionss.push(function (callback) { 
      console.log(i); 
     }); 
    } 
    for (var g in asyncFunctionss) { 
     asyncFunctionss[g](); 
    } 

Я пытаюсь запустить эту программу, она дает следующий результат.как создать динамическую функцию в javascript с циклом for и индексом внутри функции

Ожидаемый выход

Фактический выход

Как достичь ожидаемого результата?

+0

@melpomene ничего себе, forEach метод работает для меня. Спасибо большое. –

+0

forEach имеет собственный объем. –

ответ

2

Вам нужен IIFE. Причина заключается в том, что, как только функции элемента в asyncFunctionss называется переменной я уже 1. Вы можете использовать IIFE вспомнить значение переменной я:

var data = ["s","a"] 
var asyncFunctionss = []; 

for (var i in data) { 
    (function(i){ 
    asyncFunctionss.push(function (callback) { 
     console.log(i); 
    }); 
    })(i); 
} 
for (var g in asyncFunctionss) { 
    asyncFunctionss[g](); 
} 
Смежные вопросы