2013-06-06 4 views
0

При чтении документации JavaScript Я наткнулся на section что спутать меня:.JavaScript логические операторы Внутренности

«Логические операторы, как правило, используется с (логических) значений булевых; когда они, они возвращают логическое значение, однако, операторы & & и || фактически возвращают значение одного из указанных операндов, поэтому, если эти операторы используются с небулевыми значениями, они могут возвращать небулево значение. Логические операторы описаны в следующей таблице.

&& Operator: expr1 && expr2 

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

|| Operator: expr1 || expr2 

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

Допустим, у вас есть:

var a3 = false && true; 

так принимая во внимание правила для„ и“оператора, переменная a3 должна содержать истинное значение, так как» ложь "не может быть превращена в ложь.

+0

Ложное может быть преобразовано в ложное тривиально, так как оно уже неверно. – Patashu

+0

Почему «false» не может быть преобразовано в 'false'? 'false' является' false'. – Blender

+0

Истина также может быть преобразована в false. Поэтому все может быть преобразовано в false? –

ответ

5

выбор слов „может быть превращена в ложь“ проистекает из JavaScript, имеющих truthy и falsey значения.

Все значения могут быть преобразованы в правдой или falsey значение.

false является falsey, поэтому нет типа преобразования как таковой будет иметь место, но и другие значения будут конвертировать в ложный, таких как:

undefined, null, NaN, 0, "" 

Так что и оператор будет возвращать false и не true, т.к. false уже false и никакое преобразование не было бы необходимо.

+0

Я думаю, что ты прав. Путаница возникла из-за плохого выбора слов в документации. Лучший способ, которым это могло быть поставлено: «возвращает expr1, если это ложное значение, в противном случае возвращает expr2» в сочетании с линией ». Примеры выражений, которые могут быть преобразованы в false, - это те, которые оценивают значение null , 0, пустую строку ("") или undefined. ' –

+0

Или что-то вроде –

+0

@ robertrocha - как выражения преобразуются в булевы значения в [ECMA-262 §9.2] (http://www.ecma-international.org/ecma-262/5.1/#sec-9.2) , И важно различать, что значение выражения преобразуется в Boolean ** только ** для сравнения, возвращаемое значение является фактическим значением выражения (например, 'null' преобразуется в' false' для сравнения , но возвращается значение «null»). – RobG

Смежные вопросы