Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2012, 07:20
Новичок на форуме
Отправить личное сообщение для volkovics Посмотреть профиль Найти все сообщения от volkovics
 
Регистрация: 19.03.2012
Сообщений: 5

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

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

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

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


Заранее благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2012, 07:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

&& - логическое И
|| - логическое ИЛИ
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2012, 07:51
Новичок на форуме
Отправить личное сообщение для volkovics Посмотреть профиль Найти все сообщения от volkovics
 
Регистрация: 19.03.2012
Сообщений: 5

Всем спасибо за ответы.
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2012, 08:59
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

http://javascript.ru/boolean-operators
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2012, 13:40
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,745

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

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

А для использования не плохо бы (хотя и необязательно) также знать как происходит процесс выполнения этого оператора интерпретатором: так как сначала происходит определение значения левого операнда, а при хотя бы одном false возвращается false, то желательно помещать левым операндом выражение, которое чаще возвращает false (тогда интерпретатору реже придётся определять значение правого операнда).
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2012, 16:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

bes,
вы слишком всё переврали. Операторы && и || не возвращают true или false, они возвращают значения своих операндов.
alert(1 && 'test');
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2012, 18:02
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,745

Никогда бы не подумал, а не подключился бы, так бы и дальше думал, спасибо, что просветили (видимо до конца не понимал, так как думал, что в качестве выражений для этих операторов могут использоваться только логические выражения, возвращающие true или false).
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2012, 20:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

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();
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2012, 22:56
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от bes
Никогда бы не подумал, а не подключился бы, так бы и дальше думал, спасибо, что просветили (видимо до конца не понимал, так как думал, что в качестве выражений для этих операторов могут использоваться только логические выражения, возвращающие true или false).
Проверки перед присваиванием
на один пост выше промотай. Чья тема? )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2012, 23:15
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,745

Сообщение от nerv_
на один пост выше промотай. Чья тема? )
Речь шла про другое, поэтому не обратил тогда на это внимания).
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<select> и его оформление. Viral Элементы интерфейса 6 18.05.2011 09:46
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 17:57
XHR && HTTP 403 status code && Opera Ex_Soft Opera, Safari и др. 9 05.01.2011 15:44
Keyboard navigation keys && Ext.form.NumberField && Opera Ex_Soft ExtJS 2 21.12.2010 12:27
Массивы удаление элемента и вставка на его место другого mycoding Общие вопросы Javascript 1 19.04.2010 21:30