
获得徽章 0
- JS 中 >>> 0 的作用
今天在看 Array.prototype.some() 的 polyfill 时,遇到了一行代码:
var len = t.length >>> 0;
x >>> 0 表示无符号右移0位,对于无符号的数字来说,等于不变。
但是,如果 x 是其他类型,会将 x 先转换为无符号的 32位整数,再移动 0 位。
这样会确保变量 len 是一个非负的整数。
比如
9 >>> 0 = 9
"9" >>> 0 = 9
"95hi" >>> 0 = 0
3.6 >>> 0 = 3
true >>> 0 = 0
-4 >>> 0 = 4294967292
[] >>> 0 = 0
null >>> 0 = 0
undefined >>> 0 = 0
目的是让代码更鲁棒。
但是,我不认为这样的代码更鲁棒。这样做,让本可以暴露的错误,变得难以发现。展开211