我目前正在使用angularjs,并且有一段代码。我不明白它会回归什么?
authorize: function(accessLevel, role) {
if(role === undefined) {
role = Session.role;
}
return accessLevel.bitMask & role.bitMask;
},
一些测试
console.log(1&2); //0
console.log(3&7); //3
console.log(5&11); //1
console.log(0.5&11); //0
任何人都有任何想法?
编辑:很抱歉,这个问题已经被问到了。但由于我不知道关键字按位,或者无法找到与我之前的主题关键字中的任何匹配,我在这里搜索答案!答案 0 :(得分:2)
简单地说,&
是bit-wise AND
操作。 return
表达式正在检查role
" jive"中的位。使用accessLevel
中的位(即此角色是否已授权?)。
要添加一些细节,请看这一行:
console.log(3&7); //3
在比特地,我们有:
3: 00000011
7: 00000111
===========
&: 00000011 = 3
对两个字节进行逐位AND
操作的结果是AND
根据这些规则到达每个位列:
0 & 0 => 0
0 & 1 => 0
1 & 0 => 0
1 & 1 => 1
如果您将每个0
视为false
,将每个1
视为true
,那么这很有意义。有关详细信息,请参阅Truth tables上的维基百科文章。
答案 1 :(得分:0)
在每个位的位置返回一个对应的位 两个操作数都是一个。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators