var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
}
document.write(arr[1]());
результат равен 5, как я ожидал
но когда я добавил i++ между возвратом i; и конец цикла for, как и код ниже,
var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
i++;
}
document.write(arr[1]());
экран показывает ошибку, Uncaught TypeError: arr [1] не является функцией
я ожидал, что выход должен быть 6, но я не могу понять, почему.
Поскольку у вас есть два приращения для i
, назначенные элементы массива будут равны 0
, 2
и 4
. Элемент 1
пропускается.
Первое присваивание происходит, когда i
равно 0. Затем i
увеличивается на 1 в конце цикла, а затем снова на 2 в третьем разделе заголовка цикла for
. Итак, следующее назначение для элемента 2.
i
буду2
. Я предлагаю использовать некоторые инструменты отладки, чтобы посмотреть на ваши переменные или добавить в ваш код несколькоconsole.log()
чтобы понять, что происходит в следующий раз.