簡體   English   中英

JavaScript樣式:不要將包裝器對象用於基本類型

[英]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為nullundefined0""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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM