Не понимаю как работает for (два примера)
Вот собственно код. Всё вроде бы хорошо но если поменять места i-- и d++ то получится другой результат, блин я не понимаю как это работает, даже специально прописал document.write что бы пощагово следить за процессом, но так и не понимаю почему разные результаты когда мы просто поменяли местами i-- и d++
var d = 0; i = 10;
for(; d < 10 || i > 0; i-- && d++,
document.write("d is = ", d, " i is = ", i, "<br />")){
if(d ==6 || i == 3)
break;
};
/*
d is = 1 i is = 9
d is = 2 i is = 8
d is = 3 i is = 7
d is = 4 i is = 6
d is = 5 i is = 5
d is = 6 i is = 4
*/
var d = 0; i = 10;
for(; d < 10 || i > 0; d++ && i--,
document.write("d is = ", d, " i is = ", i, "<br />")){
if(d ==6 || i == 3)
break;
};
/*
d is = 1 i is = 10
d is = 2 i is = 9
d is = 3 i is = 8
d is = 4 i is = 7
d is = 5 i is = 6
d is = 6 i is = 5
*/
|
i++ - переменная применяется, затем значение увеличивается
++i - значение увеличивается, затем переменная применяется например i=1; return i++ // 1 return ++i; // 2 |
Теперь работает всё замечательно. Так как я это и задумывал. Спасибо!
++d && --i вместо d++ && i--
var d = 0; i = 10;
for(; d < 10 || i > 0; ++d && --i,
document.write("d is = ", d, " i is = ", i, "<br />")){
if(d ==6 || i == 3)
break;
};
/*
d is = 1 i is = 9
d is = 2 i is = 8
d is = 3 i is = 7
d is = 4 i is = 6
d is = 5 i is = 5
d is = 6 i is = 4
*/
|
Цитата:
Возьмем букварь... Цитата:
|
LHE — левое выражение
RHE — правое выражение LHE && RHE 1. Всегда выполняет LHE 2. если LHE — true, выполняет RHE LHE || RHE 1. Всегда выполняет LHE 2. Если LHE — false, выполняет RHE LHE, RHE 1. Всегда выполняет LHE 2. Всегда выполняет RHE Вам следует выбрать запятую, если оба выражения должны быть выполнены. |
| Часовой пояс GMT +3, время: 12:22. |