Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什麼?在這種情況下做?
將_4添加到Attacklab.wmd_env.buttons的數組中?||是什麼運營商呢?
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什麼?在這種情況下做?
將_4添加到Attacklab.wmd_env.buttons的數組中?||是什麼運營商呢?
JavaScript中的||
運算符將返回左側的值,前提是該值不計算爲false
,否則返回右側的值。
從Mozilla's Core JavaScript 1.5 Reference:
expr1 || expr2
返回expr1
,如果它可以被轉化爲true;否則,返回expr2
。因此,如果使用布爾值,則||
如果任一操作數爲true,則返回true;如果兩者都是假的,則返回false。
因此,在這種情況下,如果Attacklab.wmd_env.buttons
不具有價值,它將該值設置爲_4
。
奇怪的是,MDC使用相當含糊的「返回expr1,如果它**可以轉換爲真」。它不是真的關於「能夠被轉換」,而是關於哪個值表達式返回。 – kangax 2009-10-11 07:28:57
如果Attacklab.wmd_env.buttons
是null
或undefined
,它將被設置爲默認值_4
。
這是寫
if(!Attacklab.wmd_env.buttons)
Attacklab.wmd_env.buttons = _4;
它提供的默認值漂亮的一個奇特的方式。請記住,不僅null
和undefined
將觸發條件,而且還會觸發0
,false
和''
,即在布爾上下文中被視爲false
的所有內容。
+1用於明確列出什麼值評估爲false – 2009-05-06 20:35:05
該||運算符檢查表達式左側提供的值是否爲假(在布爾上下文中)。如果是這樣,它將返回表達式右側所示的替代值。否則,它會返回原始值。
因此,例如,下面的代碼將設置「富」到一個默認值,如果它是空:
Foo = Foo || "Default Value"
這有時被稱爲合併運算符。 它支持其他語言,如Ruby和Perl。 C#有?運算符執行相同的操作。
請修正題目。 – rkb 2009-05-06 16:56:18
哇,花了7次嘗試纔得到正確的標題... – Pool 2009-05-06 17:06:49