2009-05-06 124 views
6
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4; 

什麼?在這種情況下做?
將_4添加到Attacklab.wmd_env.buttons的數組中?||是什麼運營商呢?

+4

請修正題目。 – rkb 2009-05-06 16:56:18

+4

哇,花了7次嘗試纔得到正確的標題... – Pool 2009-05-06 17:06:49

回答

18

JavaScript中的||運算符將返回左側的值,前提是該值不計算爲false,否則返回右側的值。

Mozilla's Core JavaScript 1.5 Reference

expr1 || expr2
返回expr1,如果它可以被轉化爲true;否則,返回expr2。因此,如果使用布爾值,則||如果任一操作數爲true,則返回true;如果兩者都是假的,則返回false。

因此,在這種情況下,如果Attacklab.wmd_env.buttons不具有價值,它將該值設置爲_4

+0

奇怪的是,MDC使用相當含糊的「返回expr1,如果它**可以轉換爲真」。它不是真的關於「能夠被轉換」,而是關於哪個值表達式返回。 – kangax 2009-10-11 07:28:57

8

如果Attacklab.wmd_env.buttonsnullundefined,它將被設置爲默認值_4

12

這是寫

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

它提供的默認值漂亮的一個奇特的方式。請記住,不僅nullundefined將觸發條件,而且還會觸發0,false'',即在布爾上下文中被視爲false的所有內容。

+0

+1用於明確列出什麼值評估爲false – 2009-05-06 20:35:05

4

該||運算符檢查表達式左側提供的值是否爲假(在布爾上下文中)。如果是這樣,它將返回表達式右側所示的替代值。否則,它會返回原始值。

因此,例如,下面的代碼將設置「富」到一個默認值,如果它是空:

 
Foo = Foo || "Default Value" 

這有時被稱爲合併運算符。 它支持其他語言,如Ruby和Perl。 C#有?運算符執行相同的操作。