1
qiao 2012-01-04 10:26:30 +08:00
位运算操作符之一,作用是向右位移一位,并用0填充。
|
2
benzhe 2012-01-04 10:51:02 +08:00
this.length >>> 0 一般用于确保this.length是可运算的数值吧
http://www.w3school.com.cn/js/pro_js_operators_bitwise.asp |
3
1502 2012-01-04 11:27:20 +08:00
功能应该与 ~~this.length 类似吧,转为number
|
4
ambar 2012-01-04 12:15:32 +08:00
# 相见
首先,如果看到了这个用法,它可能是出现在一些库的 enumerable 的函数实现中,操作对象是 *伪数组对象* 或 *数组对象* , this 就指向两种可能对象(因为 JavaScript 函数的 call 和 apply 方法,可以改变 this 的指向)。 # 运算符 “>>>” 是无符号右移运算符,它保证结果为非负整数,这正是 length 的值所想要的(如果运算子为NaN,length 结果将为0,在后续代码中遍历对象也不会抛出异常)。 详见 ES5 规范文档,文档的定义使得数组原型上的方法都能作用于伪数组上面: MDN Array.prototype.map 实现参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map “Let len be ToUint32(lenValue)” :http://es5.github.com/#x15.4.4.19 9.6 ToUint32 http://es5.github.com/#x9.6 11.7.3 The Unsigned Right Shift Operator http://es5.github.com/#x11.7.3 # 什么是伪数组对象(array-like object)? // 能用数字下标存取,带有 length 属性 var o = {0:'foo',1:'bar',length:2} var each = Array.prototype.forEach // 如何简易地遍历伪数组 each.call(o,function(n,i){ console.log(n,i) }) # 更普遍的样例 伪数组在 JavaScript 中常见的主要有两类: // 经常会看到的做法,处理 NodeList 对象 each.call( document.querySelectorAll('div'), function(el){ doSomeThingWith(el) }) // 又,处理 arguments 对象 var foo = function(){ return Array.prototype.join.call(arguments,',') } foo('yep','nope') === 'yep,nope' |
5
est 2012-01-04 12:15:43 +08:00
应该和 this.length||0同样的作用。
|
6
tomheng OP |