成熟丰满熟妇高潮XXXXX,人妻无码AV中文系列久久兔费 ,国产精品一国产精品,国精品午夜福利视频不卡麻豆

您好,歡迎來(lái)到九壹網(wǎng)。
搜索
您的當(dāng)前位置:首頁(yè)JS判斷元素為數(shù)字的奇異寫(xiě)法分享

JS判斷元素為數(shù)字的奇異寫(xiě)法分享

來(lái)源:九壹網(wǎng)

它的each方法

代碼如下:
var each = _.each = _.forEach = function(obj, iterator, context) { 
if (obj == null) return; 
if (nativeForEach && obj.forEach === nativeForEach) { 
obj.forEach(iterator, context); 
} else if (obj.length === +obj.length) { 
for (var i = 0, l = obj.length; i < l; i++) { 
if (iterator.call(context, obj[i], i, obj) === breaker) return; 
} 
} else { 
for (var key in obj) { 
if (_.has(obj, key)) { 
if (iterator.call(context, obj[key], key, obj) === breaker) return; 
} 
} 
} 
};

該方法里有一句

if (obj.length === +obj.length)

這句等價(jià)于

if (typeof obj.length === 'number')

即是用來(lái)判斷元素是否為數(shù)字類(lèi)型的。typeof和Object.prototype.toString是常見(jiàn)的寫(xiě)法。而最后一種則不常見(jiàn),常人難以理解。

一些庫(kù)有類(lèi)型判斷的工具函數(shù),如

代碼如下:
function isNumber1(a){ 
return typeof a === 'number' 
}

又或者用Object.prototype.toString

代碼如下:
function isNumber2(a) { 
return Object.prototype.toString.call(a) === '[object Number]' 
}

改成這種寫(xiě)法

代碼如下:
function isNumber3(a){ 
return a === +a 
}

用各種類(lèi)型測(cè)試下

代碼如下:
var arr = ['1', true, false, undefined, null, {}, [], 1] 
for (var i=0; i<arr.length; i++) { 
console.log(isNumber3(arr[i])) 
}

結(jié)果只有數(shù)組最后的一項(xiàng)為true。即只有數(shù)字類(lèi)型 a === +a 才為真。
為什么不用typeof,因?yàn)樽址容^理論上是需要遍歷所有字符的,性能和字符串長(zhǎng)度成正比。

Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2

違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)