表达式console.log(1& 3)背后的数学术语;

时间:2014-08-13 20:00:16

标签: javascript angularjs

我目前正在使用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

任何人都有任何想法?

编辑:很抱歉,这个问题已经被问到了。但由于我不知道关键字按位,或者无法找到与我之前的主题关键字中的任何匹配,我在这里搜索答案!

2 个答案:

答案 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