Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Оператор && и его не понимание (https://javascript.ru/forum/misc/28465-operator-i-ego-ne-ponimanie.html)

volkovics 21.05.2012 08:20

Оператор && и его не понимание
 
Привет всем.

Совсем недавно начал учить ява-скрипт, столкнулся с примером, в котором используется оператор &&. Не могли бы подсказать, что он значит? Я гуглил, а ответ не нашел.

Пример, в котором мне попался данный оператор, выглядит так:

var times = 0;
while (times > 0 && times < 3) {
  console.log("the loop ran");
  times++;
}


Заранее благодарю.

devote 21.05.2012 08:24

&& - логическое И
|| - логическое ИЛИ

volkovics 21.05.2012 08:51

Всем спасибо за ответы.

Gvozd 21.05.2012 09:59

http://javascript.ru/boolean-operators

bes 23.05.2012 14:40

Речь шла о понимании.

Для общего понимания достаточно понимать, что логическое И означает "одновременно", то есть представляющий это И в javascript оператор && вернёт истину (true) только тогда, когда оба операнда истинны и вернёт ложь (false), когда хотя бы один из операндов false.

А для использования не плохо бы (хотя и необязательно) также знать как происходит процесс выполнения этого оператора интерпретатором: так как сначала происходит определение значения левого операнда, а при хотя бы одном false возвращается false, то желательно помещать левым операндом выражение, которое чаще возвращает false (тогда интерпретатору реже придётся определять значение правого операнда).

Kolyaj 23.05.2012 17:03

bes,
вы слишком всё переврали. Операторы && и || не возвращают true или false, они возвращают значения своих операндов.
alert(1 && 'test');

bes 23.05.2012 19:02

Никогда бы не подумал, а не подключился бы, так бы и дальше думал, спасибо, что просветили (видимо до конца не понимал, так как думал, что в качестве выражений для этих операторов могут использоваться только логические выражения, возвращающие true или false).

Kolyaj 23.05.2012 21:01

Паттерны использования, например:

1. Получить первое существующее (истинное) значение
var el = document.getElementById('id1') || document.getElementById ('id2') || document.getElementById('id3');


2. Получить значение свойства, если родительский объект для этого свойства существует (не придумал лучше формулировки)
var text = el && el.innerHTML;
var baz = foo && foo.bar && foo.bar.baz;



Плохие паттерны использования (для справки, чтоб знать, что плохие):
Замена оператору if
foo && bar();
foo || baz();

nerv_ 23.05.2012 23:56

Цитата:

Сообщение от bes
Никогда бы не подумал, а не подключился бы, так бы и дальше думал, спасибо, что просветили (видимо до конца не понимал, так как думал, что в качестве выражений для этих операторов могут использоваться только логические выражения, возвращающие true или false).

http://javascript.ru/forum/misc/2834...tml#post174707
на один пост выше промотай. Чья тема? )

bes 24.05.2012 00:15

Цитата:

Сообщение от nerv_
на один пост выше промотай. Чья тема? )

Речь шла про другое, поэтому не обратил тогда на это внимания).


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