我在一个JS项目中发现了以下代码:
var a = new Array();
a[0] = 0;
for (var b = 0; b < 10; b++) {
a[0] |= b;
}
在for循环的循环体中,|=
是做什么用的?
代码示例可能有问题,但它被V8提供 这里 来展示优化性能的示例。
更新的示例
上面的示例在大多数情况下等同于 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
}