Не понимаю как работает 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, время: 07:14. |