var, цикл в javascript, не может понять вывод, ошибка

1
    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, но я не могу понять, почему.

  • 0
    После первого цикла i буду 2 . Я предлагаю использовать некоторые инструменты отладки, чтобы посмотреть на ваши переменные или добавить в ваш код несколько console.log() чтобы понять, что происходит в следующий раз.
  • 0
    Поскольку вы увеличиваете индекс на 2, массив [0], массив [2], массив [4] ...
Показать ещё 1 комментарий
Теги:
for-loop
loops

1 ответ

6
Лучший ответ

Поскольку у вас есть два приращения для i, назначенные элементы массива будут равны 0, 2 и 4. Элемент 1 пропускается.

Первое присваивание происходит, когда i равно 0. Затем i увеличивается на 1 в конце цикла, а затем снова на 2 в третьем разделе заголовка цикла for. Итак, следующее назначение для элемента 2.

  • 0
    о мой .. спасибо
  • 0
    Я могу принять ваш ответ 11 минут спустя, в любом случае, спасибо
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню