i ++ зацикливается без проблем, i + 2 зацикливается бесконечно и вылетает - PullRequest
2 голосов
/ 05 мая 2019

Я хочу создать простую функцию цикла, которая добавляет 2 при каждом цикле. Тем не менее, даже несмотря на то, что я говорю моему циклу for об остановке, если число достигает или меньше 100, оно превышает 100 и повторяется бесконечно.

i ++ работает просто отлично:

function addTwo() {
  for (i = 0; i <= 100; i++) {
    console.log(i);
  }
}

addTwo();

Когда я изменяю его на i + 2, происходит сбой:

function addTwo() {
  for (i = 0; i <= 100; i + 2) {
    console.log(i);
  }
}

addTwo();

Я ожидаю, что консоль войдет в систему: 0 2 4 6 8 ... 100.

Но вместо этого он бесконечно зацикливается и вылетает.

Ответы [ 5 ]

3 голосов
/ 05 мая 2019

i+2 в вашем случае ничего не делает.JS оценивает его и затем ничего не делает с вычисленным значением, это означает, что i никогда не увеличивается.

++ - это специальный оператор, который увеличивает переменную, предшествующую ему, на 1.

Чтобы заставить цикл работать, вы должны присвоить значение вычисления i+2 переменной i.

for (i=0; i<=100; i = i+2) {
    console.log(i);
}

или

for (i=0; i<=100; i += 2) {
    console.log(i);
}
3 голосов
/ 05 мая 2019

i++ шаг i.Но i+2 не обновляет значение i.Вы должны изменить его на i += 2

function addTwo() {
  for (i = 0; i <= 100; i += 2) {
    console.log(i);
  }
}

addTwo();
2 голосов
/ 05 мая 2019

i++ - это короткая рука для i += 1, которая называется Оператор приращения Но i+2 или даже i+1 не увеличат значение i. Вам нужно увеличить его, назначив новое значение для i. i = i + 2 или i += 2.

Число - это один из примитивных типов в javascript, который означает, что вы не можете изменить его, если не используете оператор присваивания =

Примечание : Вы не используете let или var с i, это сделает i глобальной переменной.

function addTwo() {
  for (let i = 0; i <= 100; i+=2) {
    console.log(i);
  }
}

addTwo();
1 голос
/ 05 мая 2019

Третьим параметром for является конечное выражение :

Выражение, которое будет оцениваться в конце каждой итерации цикла.Это происходит до следующей оценки состояния.Обычно используется для обновления или увеличения переменной счетчика.

В вашем случае вы не присваиваете значение i.Вы должны заменить его на что-то вроде этого:

function addTwo() {
  for (i=0; i<=100; i+=2) {
    console.log(i);
  }
}

addTwo();
0 голосов
/ 05 мая 2019
for (i = 0; i <= 20; i++) {
    console.log(i);        
     i++;
}

Вы можете увеличить i в два раза или

for (i=0; i<=100; i+=2) {
    console.log(i);
}

, вы можете использовать i + = 2, это увеличит значение i в 2 раза и установит новое значение i.

...