javascript - 表达式 console.log(1&3); 背后的数学原理是什么?

标签 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

有人知道吗?

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

最佳答案

简单来说,&就是一个bit-wise AND手术。 return 表达式正在检查 role 中的位是否与 accessLevel 中的位“一致”(即此 Angular 色是否已授权?)。

要添加一些细节,让我们看一下这一行:

console.log(3&7);     //3

在比特大陆,我们有:

3: 00000011
7: 00000111
===========
&: 00000011 = 3

两个字节的按位 AND 运算的结果是根据以下规则通过 AND -ing 每个位列得出的:

0 & 0 => 0
0 & 1 => 0
1 & 0 => 0
1 & 1 => 1

如果您将每个 0 视为 false,将每个 1 视为 true,那么它就赚了很多的感觉。请参阅关于 Truth tables 的维基百科文章有关更多信息。

关于javascript - 表达式 console.log(1&3); 背后的数学原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295077/

相关文章:

javascript - 该页面的脚本完成调整后,get() 可以检索完整的 html 吗?

javascript - 从 ul javascript 添加/删除 <li> 元素

javascript - 编辑 orderby-property 时 AngularJS orderby 不起作用

angularjs - UI 路由器 $stateChangeStart 根本不工作

javascript - Node.js 上传到 Heroku 时出错,Web 进程在启动后 60 秒内无法绑定(bind)到 $PORT

javascript - AngularJS,如何选择正确的默认选项元素?

javascript - 从 javascript(调用 API)返回包含对象(__proto__)的错误 json

javascript - 如何在 Angular 中仅获取/检查表的可见行

node.js - Sails 应用最佳实践

javascript - Controller ---工厂: passing parameters