Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2015, 10:19
Аватар для jack3dm
Аспирант
Отправить личное сообщение для jack3dm Посмотреть профиль Найти все сообщения от jack3dm
 
Регистрация: 05.04.2015
Сообщений: 52

Не понимаю как работает 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
*/
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2015, 10:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

i++ - переменная применяется, затем значение увеличивается
++i - значение увеличивается, затем переменная применяется

например

i=1;

return i++ // 1

return ++i; // 2
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2015, 10:30
Аватар для jack3dm
Аспирант
Отправить личное сообщение для jack3dm Посмотреть профиль Найти все сообщения от jack3dm
 
Регистрация: 05.04.2015
Сообщений: 52

Теперь работает всё замечательно. Так как я это и задумывал. Спасибо!
++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
*/
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2015, 10:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от jack3dm
Не понимаю как работает for
Ты не for не понимаешь... А не понимаешь как работает логическая операция &&

Возьмем букварь...
Цитата:
Логическое И (&&)
expr1 && expr2

Возвращает expr1, если оно может быть преобразовано к false; в ином случае возвращает expr2. Так что, при вызове с булевыми значениями, && вернет true только если оба операнда истинны, иначе false.
http://javascript.ru/boolean-operators
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2015, 18:38
Аспирант
Отправить личное сообщение для Urfin Посмотреть профиль Найти все сообщения от Urfin
 
Регистрация: 22.07.2009
Сообщений: 85

LHE — левое выражение
RHE — правое выражение

LHE && RHE
1. Всегда выполняет LHE
2. если LHE — true, выполняет RHE

LHE || RHE
1. Всегда выполняет LHE
2. Если LHE — false, выполняет RHE

LHE, RHE
1. Всегда выполняет LHE
2. Всегда выполняет RHE

Вам следует выбрать запятую, если оба выражения должны быть выполнены.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Так как же работает onload? tourniquet Events/DOM/Window 8 25.10.2014 19:31
Как работает git merge ixth Оффтопик 3 05.09.2014 14:53
Как работает подсветка синтаксиса? Hapson Events/DOM/Window 13 08.01.2014 20:07
Как работает Google Analytics: смотрю в "Инструментах разработчика" Chrome hrundel Общие вопросы Javascript 0 10.10.2013 19:31
dragleave работает как mouseout, а не mouseleave? danik.js Events/DOM/Window 17 17.09.2013 17:17