2
我在Underscore.js的_.each實現中遇到了這行代碼,我很好奇這裏正在發生什麼。 obj前面的'+'是做什麼的?用'+'操作符爲對象添加前綴是做什麼的?
if (obj.length === +obj.length) { ... }
我在Underscore.js的_.each實現中遇到了這行代碼,我很好奇這裏正在發生什麼。 obj前面的'+'是做什麼的?用'+'操作符爲對象添加前綴是做什麼的?
if (obj.length === +obj.length) { ... }
的if
測試,obj.length
是數字,而不是NaN
。右側始終是一個數字(或NaN
,如果obj.length
不能被解釋爲數字)。如果obj.length
也是一個數字,它只會在左邊===
。
請注意,如果obj.length
是一個數字外觀字符串,則使用isNaN
將不起作用;即isNan("3")
返回false
。還請注意,NaN === NaN
是false
— NaN
從來沒有===
任何東西。
那麼比較同一個對象的.length屬性有什麼意義呢?一次是'強制編號',一次不是?這完成了什麼? – alnafie 2013-02-19 06:36:27
@alnafie - 我必須查看代碼才能知道,但是我最初的猜測是它會繞過代碼,要麼需要'obj.length'是一個數字,要麼是一些昂貴的代碼來計算'obj.length如果它已經正確設置,應該跳過。 – 2013-02-19 06:42:03