Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   опять про setTimeout (https://javascript.ru/forum/misc/3397-opyat-pro-settimeout.html)

twolf 16.04.2009 11:20

Цитата:

Сообщение от AzriMan (Сообщение 16709)
значение ведь сперва увеличивается а потом уже проверяется условие.

Это если бы было ++i
В данном примере наоборот: i увеличивается когда отработали все операторы.

Kolyaj 16.04.2009 11:43

AzriMan,
twolf,
оба сообщения -- бред, сотрите, пока мало кто видел :)

twolf 16.04.2009 11:48

полез в мануалы.
Цитата:

оператор перед переменной, переменная увеличивается прежде, чем возвращается её значение.
Цитата:

Это поведение воздействует на счётчик цикла for. Как правило счетчик цикла, который растёт вверх от минимального значения, увеличивается после того, как сработали все инструкции в цикле. Таким образом в большинстве счетчиков цикла оператор ++ размещается после переменной:

for (var i = 10; i >=0; i++) ...
может я неправильно что-то понял? :-?

Kolyaj 16.04.2009 11:56

for (var i = 0; i < 5; ++i)
    console.log(i);

for (var i = 0; i < 5; i++)
    console.log(i);

Чувствуете разницу? И я не чувствую.

Вы не про инкремент читайте, а про цикл for.

twolf 16.04.2009 12:07

тогда совершенно непонятно почему пишут, что инкремент именно после переменной, раз никакой разницы нет.

Kolyaj 16.04.2009 12:32

Как работает цикл for:
1. выполняется блок инициализации
2. выполняется блок условия, если ложно, то выходим из цикла
3. выполняется тело цикла
4. выполняется третий блок (хз как его назвать)
5. возвращаемся к п.2

Вот если цикл будет такого вида.
for (var i = 5; --i;)
    console.log(i)
for (var i = 5; i--;)
    console.log(i)
то будет разница.

twolf 16.04.2009 12:49

третий блок - это где изменяется счетчик?
тогда почему он выполняется после тела цикла?

Kolyaj 16.04.2009 12:50

Цитата:

Сообщение от twolf
тогда почему он выполняется после тела цикла?

По определению.

Zeroglif 16.04.2009 22:28

Цитата:

Сообщение от twolf
тогда почему он выполняется после тела цикла?

Поможет разобраться:

// 0 123 123 1 4

for ( ( alert(0), i = 0 ); ( alert(1), i < 2 ); ( alert(3), i++ ) ) {
    alert(2);
}

alert(4);


Часовой пояс GMT +3, время: 08:08.