2011-02-01 63 views
4

所以我正在瀏覽JQuery源代碼以獲得更好的編程技巧,並且我發現了一些代碼,我不知道發生了什麼。這位或者操作符在JavaScript中做了些什麼?

type = type || callback; 

誰能解釋一下OR ||在變量賦值中做什麼?

我做了一些實驗,設置和取消設置值和什麼不是,但我不明智。

回答

9

如果type是一個「falsey」值,那麼callback值將被分配給type變量,否則type將被分配。

的 「falsey」 的值是:

  • false
  • null
  • undefined
  • 0
  • ""(空字符串)
  • NaN

所以基本上它說:「與callback如果type是falsey值中的任何一個取代type」。

考慮一下:

var type = undefined; 

type = type || "default value"; 

type變量將最終得到"default value"分配。

如果是這樣的:

var type = "some value"; 

type = type || "default value"; 

然後它會保持其"some value"

+0

謝謝@Gareth。 :o) – user113716 2011-02-01 14:15:28

+0

生氣你們快!這真是太棒了。 – Craig552uk 2011-02-01 14:19:45

2

它將變量「type」設置爲其當前值,如果當前值不是「truthy」,則將該變量設置爲「callback」的值。如果「類型」是undefinednull或0,或空字符串或布爾型false,則它將被設置爲「回調」的值。

編輯哎呀或NaN

0

所以我看到多個變量可以被「鏈接」在一起,第一個「非falsey」的價值分配。

var val, a, b, c; 
a = undefined; 
b = null; 
c = "C"; 
val = a || b || c; 
alert(val); 

這非常方便。