Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   "Или" в выражении (https://javascript.ru/forum/misc/17173-ili-v-vyrazhenii.html)

revvo 08.05.2011 23:29

"Или" в выражении
 
Я не недавно работаю с js, и некоторые вещи мне трудно понять. Подскажите, как понимать эту конструкцию?
img.width = data.width || "320";

В каком случае будет присваиваться data.width, а в каких 320?

melky 09.05.2011 10:38

Цитата:

Сообщение от revvo (Сообщение 103886)
Я не недавно работаю с js, и некоторые вещи мне трудно понять. Подскажите, как понимать эту конструкцию?
img.width = data.width || "320";

В каком случае будет присваиваться data.width, а в каких 320?

идет приведение в булеву типу, а значит, что

FALSE будут иметь такое :
  • undefined
  • null
  • NaN
  • '' (пустая строка)
  • 0 ( нолик )
  • сам false,конечно же

ИЛИ работает так: если по левую сторону находится FALSE, то начинает обрабатываться то,что справа, пока не будет true. Если по левую сторону находится TRUE, то то,что справа,не будет высчитываться и вернется первое в результате

320 как раз дает true.

т.е.

в примере
img.width = data.width || "320";


"если высота картинки равна нулю, то она становится 320, иначе data.width"

poorking 11.05.2011 08:59

melky,
Цитата:

Сообщение от melky
"если высота картинки равна нулю, то она становится 320, иначе data.width"

Че то не то) если data.width, то data.width, иначе 320
var img = {
	width: 0
}
	
var data = {
	width: 10
}
	
img.width = data.width || 320;	
alert(img.width);
	
data.width = 0;
	
img.width = data.width || 320;
alert(img.width);

melky 11.05.2011 18:05

Цитата:

Сообщение от poorking (Сообщение 104136)
melky,

Че то не то) если data.width, то data.width, иначе 320

ну высота ведь не может быть FALSE :D

только ноль, или "не установлено", или строка


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