Проблема с видимостью переменной
Пытаюсь создать несколько Event Listenerв цикле:
var cssArr = ["f1", "f2", "f3"];
for (var i = 0; i < cssArr.length; i++){
var cssCur = cssArr[i];
var cb = function(){
console.log(cssCur);
}
window.addEventListener('load', cb);
}
На выходе хочу получить три Event Listener с тремя различными значениями, но у меня на выходе в консоли всегда три строки "f3". Пробовал делать разными способами, пробовал делать через замыкание, но не получается. Я так понимаю, здесь проблема с областью видимости или я чего-то недопонимаю. Подскажите, в чем именно здесь проблема? |
Alpunto,
Пример ошибочного использования |
Спасибо. Также нашел ответ в книге "Подробное руководство".
Это рабочий код:
var cssArr = ["f1", "f2", "f3"];
for (var i = 0; i < cssArr.length; i++){
var cb = createListeners(cssArr[i]);
window.addEventListener('load', cb);
}
function createListeners (cssCur){
return function (){
console.log(cssCur);
};
}
|
| Часовой пояс GMT +3, время: 01:48. |