Что значит || оператор делает? - PullRequest
7 голосов
/ 06 мая 2009
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;

что означает || делать в этом случае?
Добавляет _4 в массив, который является Attacklab.wmd_env.buttons?

Ответы [ 4 ]

19 голосов
/ 06 мая 2009

Оператор || в JavaScript возвращает значение слева, если это значение не равно false, в противном случае возвращает значение справа.

Из Справочник по Mozilla Core 1.5 JavaScript :

expr1 || expr2
Возвращает expr1, если оно может быть преобразовано в true; в противном случае возвращает expr2. Таким образом, при использовании с логическими значениями || возвращает true, если любой из операндов равен true; если оба имеют значение false, возвращает false.

Таким образом, в этом случае, если Attacklab.wmd_env.buttons не имеет значения, оно устанавливает значение _4.

12 голосов
/ 06 мая 2009

Это необычный способ написания

if(!Attacklab.wmd_env.buttons)
    Attacklab.wmd_env.buttons = _4;

Это хорошо для предоставления значений по умолчанию. Помните, что не только null и undefined будут вызывать условные выражения, но также 0, false и '', то есть все, что считается false в логических контекстах.

8 голосов
/ 06 мая 2009

Если Attacklab.wmd_env.buttons равно null или undefined, для него будет установлено значение по умолчанию _4.

4 голосов
/ 06 мая 2009

|| Оператор проверяет, является ли значение, указанное в левой части выражения, ложным (в логическом контексте). Если это так, он возвращает альтернативное значение, указанное в правой части выражения. В противном случае он возвращает исходное значение.

Так, например, следующий код установит для 'Foo' значение по умолчанию, если оно равно нулю:

Foo = Foo || "Default Value" 

Это иногда называют оператором объединения. Он поддерживается в других языках, таких как Ruby и Perl. C # имеет ?? оператор, который делает то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...