[英]JavaScript style: don't use wrapper objects for primitive types
在Google JavaScript樣式指南中,它表示不對原始類型使用包裝器對象。 它說這樣做是“危險的”。 為證明其重點,它使用了以下示例:
var x = new Boolean(false);
if (x) {
alert('hi'); // Shows 'hi'.
}
好的,我放棄了。 為什么if代碼在這里執行?
因為每個變量, typeof
Object
是truthy和包裝都是對象。
if(x)
x
是真的, if(x)
將運行。
如果不是假的話, x
是真的。
如果x為null
, undefined
, 0
, ""
, false
,則x為false
因此,因為new Boolean(false)
是一個Object
而一個Object
是真實的,所以該塊運行
在if(x)
情況下,它實際上是在評估所命名對象的默認布爾值而不是其值false
。
所以要小心使用Boolean
對象而不是Boolean
值。 =)
以下代碼使用Boolean對象。 Boolean對象為false,但仍然執行console.log("Found")
因為在條件語句中對象始終被視為true。 對象表示錯誤並不重要; 它是一個對象,因此它的計算結果為true。
var found = new Boolean(false);
if (found)
{ console.log("Found");
// this executes
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.