我正在查看Mozilla的代码,它为Array添加了一个过滤器方法,并且它有一行代码让我困惑。
var len = this.length >>> 0;
我从来没有见过>>>在JavaScript中使用过。 它是什么,它有什么作用?
发布于 2018-03-21 12:01:20
无符号右移运算符用于Mozilla 的所有数组extra的方法实现中,以确保该length
属性是无符号的32位整数。
length
数组对象的属性在规范中描述如下:
每个数组对象都有一个长度属性,其值始终是一个小于2 32的非负整数。
该操作符是实现它的最短途径,内部数组方法使用该ToUint32
操作,但该方法不可访问并存在于规范中以用于实现目的。
Mozilla 数组额外的实现尝试符合ECMAScript 5,查看Array.prototype.indexOf
方法的描述(第15.4.4.14节):
1.让O为调用ToObject传递此值的结果
作为论据。
2.让lenValue成为调用O的[[Get]]内部方法的结果
参数“长度”。
让
正如你所看到的,他们只是想重现ToUint32
方法的行为,以符合ES3实现中的ES5规范,正如我之前所说的,无符号右移运算符是最简单的方法。
https://stackoverflow.com/questions/-100003206
复制相似问题