2013-06-06 47 views
0

在閱讀我碰到一個section是困惑我來到JavaScript的文檔:JavaScript的邏輯運算符內部

「邏輯運算符通常與布爾(邏輯)值使用;當他們,他們返回一個布爾值然而, ||運算符實際上返回其中一個指定操作數的值,所以如果這些運算符與非布爾值一起使用,它們可能會返回一個非布爾值。邏輯運算符如下表所示:

&& Operator: expr1 && expr2 

(邏輯AND )如果它可以轉換爲false,則返回expr1;否則,返回expr2。因此,當與布爾值一起使用時,如果兩個操作數都爲真,則返回true;否則,返回true。否則,返回false。

|| Operator: expr1 || expr2 

(邏輯OR)返回expr1是否可以轉換爲true;否則,返回expr2。因此,當與布爾值一起使用時,||如果任一操作數爲真,則返回true;如果兩個都是假的,返回false「

比方說,你有:

var a3 = false && true; 

所以考慮到對價的規則‘以及’運營商,變量A3應該包含的價值,因爲真正的」假「不能被轉換爲false。

+0

錯誤可以轉化爲錯誤,因爲它已經是錯誤的。 – Patashu

+0

爲什麼不能將'false'轉換爲'false'? 'false'是'false'。 – Blender

+0

True也可以轉換爲false。因此,任何事情都可以轉化爲假? –

回答

5

詞語的選擇 」可轉化爲假「從具有truthyfalsey值的JavaScript莖。

所有的值都可以轉換成truthyfalsey的值。

false是falsey,所以沒有類型轉換因爲這樣會發生,但其他值將轉換爲false,如:

undefined, null, NaN, 0, "" 

所以和語句返回false而不是true,因爲false已經是false,不需要轉換。

+0

我認爲你是對的。這種混淆是由於文檔中文字的選擇不當造成的。如果它是一個錯誤值,返回expr1;否則,返回expr2「並結合該行,'可以轉換爲false的表達式的例子是那些計算爲null的表達式,0,空字符串(「」)或未定義。 –

+0

或類似的東西 –

+0

@ robertrocha - 表達式如何轉換爲布爾值位於[ECMA-262§9.2](http://www.ecma-international.org/ecma-262/5.1/#sec-9.2) 。爲了比較,區分表達式的值僅轉換爲布爾**是重要的,返回的值是表達式的實際值(例如,將null作爲比較轉換爲false) ,但返回值爲null)。 – RobG