【发布时间】:2012-10-03 00:11:32
【问题描述】:
我在一个JS项目中找到了如下代码:
var a = new Array();
a[0] = 0;
for (var b = 0; b < 10; b++) {
a[0] |= b;
}
|= 在 for 循环体中做了什么?
代码示例有问题,但已由 V8 提供 here 以作为提高性能的示例。
更新示例
对于大多数意图和目的,上面的示例等效于var a = [15];。 |= 运算符的更现实示例是在单个变量中设置二进制标志,例如在权限对象上:
//Set up permission masks
var PERMISSION_1_MASK = parseInt('0001',2);
var PERMISSION_2_MASK = parseInt('0010',2);
..
//Set up permissions
userPermissions = 0;
userPermissions |= hasPermissionOne && PERMISSION_1_MASK;
userPermissions |= hasPermissionTwo && PERMISSION_2_MASK;
..
//Use permissions
if(userPermissions & PERMISSION_1_MASK){
..//Do stuff only allowed by permission 1
}
【问题讨论】:
-
我才意识到它来自这里的代码。 html5rocks.com/en/tutorials/speed/v8
-
@razpeitia 阅读了这个问题,你会发现那个 URL...
标签: javascript operator-keyword