2013-02-21 77 views
-2

以下方式設置默認值和哪一個是正確的有什麼區別?在javascript中設置默認值

1) var1 = var1 || 'default_value' 
2) var1 = typeof(var1) !== 'undefined' ? var1 : 'default_value' 
3) var1 = var1 !== 'undefined' ? var1 : 'default_value' 
4) var1 = var1 != 'undefined' ? var1 : 'default_value' 
+4

他們都做了非常不同的事情。 – 2013-02-21 16:34:19

回答

1

這些都做的非常不同的事情:

  1. var1 = var1 || 'default_value'

    var1將等於'default_value'如果var1falseyNaNfalse0''undefined)。這意味着如果var1是這些值中的任何一個(可能最明顯是false0''),則var1將等於default_value

  2. var1 = typeof(var1) !== 'undefined' ? var1 : 'default_value'

    var1將等於'default_value'如果var1的類型是嚴格等於'undefined'

  3. var1 = var1 !== 'undefined' ? var1 : 'default_value'

    var1將等於'default_value'只有var1不嚴格等於字符串'undefined'

  4. var1 = var1 != 'undefined' ? var1 : 'default_value'

    var1將等於'default_value'只有var1不等於字符串'undefined'

最後兩個可能是錯誤的。你很少要檢查變量的值是否爲字符串'undefined'。您可能打算直接檢查undefined

要全面瞭解其中每一項,您應該瞭解嚴格相等(===)運算符與相等運算符(==)之間的差異。 。

1

第二個是正確的四個。它會按照你的意圖工作(如果變量沒有設置,使用默認值)。

  1. 這也將使用默認值,如果var1是falsey(0falsenull'',以及undefined
  2. 這將使用默認值,如果var1不等同於字符串'undefined'
  3. 這將使用默認值,如果var1不等於字符串'undefined'
1

第一個和第二個作品,但對於不同的條件。

第三個和第四個將該值與字符串"undefined"進行比較,這根本不確定它是否是未定義的值。

如果當前值計算結果爲false,則第一種方法使用默認值。這適用於大多數的價值觀,但如果您例如使用true用它作爲默認布爾值,它不可能將它設置爲false,並有生存的考驗:

var var1 = false; 

var1 = var1 || true; 

現在是true eventhough它已經有了價值。您將遇到與其他特定值相同的問題,例如0""

第二個是與不同的數據類型最一致的工作。然而,第一個經常使用,因爲它更短。