(javaScript) значение внутри и вне 'для l oop' - PullRequest
0 голосов
/ 11 июля 2020

Я новичок с javaSCript и мне просто интересно, почему результаты разные, когда это называется «внутри» l oop и «снаружи» l oop.

for (var i = 0; i < 5; i++) {
console.log(i);
// prints 0 1 2 3 4 
}

console.log(i);
// prints 0 1 2 3 4 5

Ответы [ 4 ]

0 голосов
/ 11 июля 2020

Поскольку шаги цикла for:

  • 1 - определить переменную ,
  • 2 - проверить условие ,
  • 3 - запустите код внутри l oop,
  • 4 - и увеличьте значение переменной l oop на 1 ,

Но! После определения переменной и после первого l oop он проигнорирует первый аргумент var i = 0 и увеличит l oop переменную на 1, и проверьте условие, почему? Поскольку в цикле for последнее, что нужно сделать, это увеличить переменную l oop на 1,

Таким образом, последний l oop увеличит переменную l oop на 1 и проверит условие,

Просто: переменная изменилась через l oop на 5, потому что после первого l oop она увеличит переменную на 1 и проверит условие

Надеюсь, мой ответ будет вам полезен!

0 голосов
/ 11 июля 2020

Во время выполнения l oop условие i <5 не выполняется для «5 <5», но все же значение i здесь становится «5», которое выполняется вне l oop</p>

for (var i = 0; i < 5; i++) {
console.log("inside loop: " + i);
// prints 0 1 2 3 4 
}

console.log("outside loop: " + i);
// prints just 5
0 голосов
/ 11 июля 2020

Вот как работает var в JS, а также как работают циклы for на всех языках.

Когда вы объявляете переменную с помощью ключевого слова var, она поднимается в область действия функции или глобальна, если не внутри функция. Это позволяет получить доступ к var за пределами области действия for l oop. Попробуйте изменить var на let и посмотрите, что произойдет.

Во-вторых, вы не видите 5, напечатанного в for-l oop из-за вашего условия i < 5. i++ вызывает 'i' в go от 4 до 5, что нарушает условия for-l oop, и 'i' не печатается.

Наконец, console.log (i) вне for -l oop должен просто вывести 5, потому что это значение i в этой точке, а не

console.log(i);
// prints 0 1 2 3 4 5
// should print 5 
0 голосов
/ 11 июля 2020

Внутри l oop записываются числа от 0 до 4. Последний i++ устанавливает i в 5, а l oop останавливается, потому что i < 5 больше не соответствует действительности. Затем console.log(i) после l oop регистрирует это значение.

...