这是为了什么:
arr.length >>> 0
我为什么要使用它?
答案 0 :(得分:8)
这是无符号右移操作符。在这种情况下(与0
一起使用时),它确保arr.length
是一个整数,或者更确切地说,将arr.length
计算为严格的无符号32位整数值。 (这意味着它永远不会NaN
,永远不会消极,并且永远不会有小数部分。)
示例:
'1' >>> 0: 1
1 >>> 0: 1
'' >>> 0: 0
undefined >>> 0: 0
null >>> 0: 0
1.0∙∙∙01 >>> 0: 1
比较:
Number('1') : 1
Number(1) : 1
Number('') : 0
Number(undefined): NaN
Number(null) : 0
Number(1.0∙∙∙01) : 1.0∙∙∙01
只是确保正确使用正确的长度。
答案 1 :(得分:5)
确保.length
是32位整数。
在大多数实现中,数组索引限制为32位范围(至少在使用Array.prototype
方法时,以及.length
)的神奇行为。< / p>