2012-03-06 48 views
4

我碰巧知道下面的代碼邏輯運算符||在JavaScript中,0代表布爾錯誤?

這裏是代碼,很簡單:

var test = 0 || -1 ; 
console.log(test); 

然後在控制檯輸出-1

並不知我是真的新到JavaScript,

所有我想到的是,代表布爾型False in JS,所以||運營商似乎忽略了0並將值-1賦值給變量

所以我對嗎? 我只是想確認

+0

邏輯運算符是!.....謝謝你指出! – Lien 2012-03-06 07:15:13

回答

14
  • || - expr1 || expr2(邏輯OR)

    將返回EXPR1如果能夠轉化爲真實的;否則,返回expr2。因此,當與布爾值一起使用時,||如果任一操作數爲真,則返回true;如果兩者都爲假,則返回false ..

  • && - expr1 && expr2(邏輯與)

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

在Javascript中所有的值爲 「truthy」 或 「falsy」。
下面的值是等效於誤在條件語句

  • 未定義
  • 空字符串""(\ ''
  • 數字0
  • 編號NaN

其他所有值都等於true。


所以...... var test = 0 || -1 ;回報-1

如果是var test = 0 || false || undefined || "" || 2 || -1它將返回2


MDN

+0

在[Practical Node.js](http://www.apress.com/9781430265955)中有以下代碼:'var user = function(ops){{{name}:ops.name || 'John',姓氏:ops.name || 'Doe',電子郵件:ops.email || '[email protected]',name:function(){return this.firstName + this.lastName}}}' - 所以,我猜它分配了第一個值,如果它們是「truthy」(已定義)第二個值是默認值? – Fuhrmanator 2014-09-23 13:56:50

+0

@Fuhrmanator正確。 – gdoron 2014-09-23 14:02:10