Что вызвало эту проблему, так это результат работы программы JS:
Кода -копия выглядит следующим образом:
var i = 0;
функция a () {
for (i = 0; i <20; i ++) {
}
}
функция b () {
for (i = 0; i <3; i ++) {
a ();
}
вернуть я;
}
var result = b ();
Результатом работы этой программы является результат = 21;
Из этой программы мы видим, что нет проблем с тем, что значение I составляет 20, когда функция A возвращает.
Когда функция b возвращается, стоит обсудить, составляет ли значение I 20 или 21.
Суть проблемы: сначала определить, выполняется ли я <3 или I ++ сначала, а затем определите, я <3.
Согласно результатам выполнения, видно, что I ++ был выполнен первым.
Кода -копия выглядит следующим образом:
функция a () {
for (i = 0; i <20; i ++) {
// нет var i
// I здесь - глобальная переменная, к которой каждый может получить доступ
}
}
функция b () {
for (i = 0; i <3; i ++) {
// предупреждение (i); // Аналогично, я здесь также является глобальной переменной, возвращая 0 и только один раз возвращает
a (); // Эта функция возвращает i = 20
// Когда я = 20 проходит I ++ и I = 21, то это не соответствует условиям i <3 и выходит напрямую. Так что верните I = 21 Это нормально!
}
вернуть я;
}
var result = b ();
Здесь мы выполняем порядок выполнения цикла:
Следующая программа является примером
Кода -копия выглядит следующим образом:
для (int i = 0; i <10; i ++)
{
}
Сначала выполните i = 0; i <10; а затем выполните первый раунд тела петли
Затем выполнить: i ++, i <10; Затем выполните второй раунд тела петли
До последнего i ++ после i> = 10, петля заканчивается.
Прямо сейчас
Оператор 1 выполняется до начала цикла (кодовой блок)
Оператор 2 определяет условия для запуска цикла (кодовый блок)
Оператор 3 выполняется после выполнения цикла (кодовый блок)