this.length >>> 0表示什么? es5-safe
分类:Javascript| 发布:camnprbubuol| 查看:561 | 发表时间:2013/4/25
摘自:es5-safe.js
3 | AP.forEach || (AP.forEach = function (fn, context) { |
4 | for ( var i = 0, len = this .length >>> 0; i < len; i++) { |
6 | fn.call(context, this [i], i, this ); |
this.length >>> 0
此句解释:这个语句先将 array 的 length 属性存在局部变量 len 中加速访问。然后借助右移位运算符 用零填充 len 左边空出的位,这样做的好处是如果 length 未定义就取0.
语法解释:
result = expression1 >>> expression2
>>> 运算符将 expression1 的位右移 expression2 中指定的位数。 用零填充右移后左边空出的位。 右移的位被丢弃。
这个可以看ECMAScript的相关章节,可以用来将:
1. 所有非数值转化成0,例如undefined
2. 所有大于等于0等数取整数部分
这么写确实比 var len = this.length || 0; (parseInt?)要好很多,在遇到意外的 this 时,它不会返回 { }、NaN 等意外的值。(IE 6+ 支持)
参考:http://www.zhihu.com/question/20693429
http://javascript.about.com/od/hintsandtips/a/foreach.htm