通過underscore.js
源代碼中,我偶然發現了following line閱讀:Javascript成語:if(x === + x)是做什麼用的?
... if (obj.length === +obj.length) { ...
這對我來說有點混亂。實際上在這裏比較什麼?我相信它有一些關於檢測本地數組的問題,但無法弄清楚實際發生了什麼。 +
是做什麼用的?爲什麼用===
而不是==
?這種風格的性能優勢是什麼?
通過underscore.js
源代碼中,我偶然發現了following line閱讀:Javascript成語:if(x === + x)是做什麼用的?
... if (obj.length === +obj.length) { ...
這對我來說有點混亂。實際上在這裏比較什麼?我相信它有一些關於檢測本地數組的問題,但無法弄清楚實際發生了什麼。 +
是做什麼用的?爲什麼用===
而不是==
?這種風格的性能優勢是什麼?
的+
值強制轉換到一個號碼(很像!!
它強制轉換爲布爾值)。
if (x === +x)
...可用於確認x
本身包含一個整數值。在這種情況下,可能需要確保obj
的長度屬性是一個整數並且沒有被字符串值覆蓋,因爲如果obj
被視爲數組,則可能會導致迭代。
+將右側的數字合併爲一個數字。
在這種情況下,如果長度不是對象上的屬性,則undefined將被返回。 + undefined
將產生Nan
,這種評估是錯誤的。
如果字符串可以是連貫的-ED成多個那麼這將是.. e.g + '1'
將產生1
作爲Number
這與十六進制值以字符串形式處理例如當是特別重要+'0x7070'
收益率28784
JavaScript中沒有整數。 – 2013-02-14 16:34:49
'+'5.5''是'5.5',您正在尋找_Number_。 (&@Salman,整數將在ES6中引入) – 2013-02-14 16:35:51
準確地說'+'是'parseFloat'的快捷方式,而不是'parseInt'。所以它強制浮點值(或*「Number」*類型)。 – VisioN 2013-02-14 16:35:59