首页 前端知识 js中单竖杠‘|‘的的使用方法

js中单竖杠‘|‘的的使用方法

2024-02-12 14:02:48 前端知识 前端哥 329 891 我要收藏

项目开发过程中碰到了这样一段代码:

this.uuid = 'xxxxxxy_xxxx_xxxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g,
                function (c) {
                    var r = Math.random() * 16 | 0,
                        v = c == 'x' ? r : (r & 0x3 | 0x8);
                    return v.toString(16);
                }).toUpperCase();
            this.uuid=getCharacter("upper")+this.uuid;

​ 起初看到的时候,对单竖杠运算符’|‘不太理解,于是就在网上搜了一下,搜到的答案就好像是一个人写的,都是只介绍说,单竖杠’|‘可以用来取整运算,只保留整数部分。然后具体的运算规则,统一都是再说单竖杠’|'是将两个数转成二进制数后相加得到的结果,并给出例子

console.log(3|4); //7
console.log(8|3);//11
console.log(4|4);//4

​ 看到这里的时候,前两个用二进制相加是没有问题的,但是到’4|4’的时候,就让人不得其解了,因为二进制相加的4|4明明是8,怎么会是4;

3|4

011
100
----
111

3|4 = 7

8|3

1000
0011
-----
1011

8|3 = 11

4|4

100
100
----
1000
算到这里,4|4应该是为8,但是这浏览器执行的时候4|4为4

于是就觉得单竖杠’|‘会不会不是二进制相加的结果。于是我就去找了一下朋友问一下,朋友一语点醒梦中人,说单竖杠’|'并不是相加,而是二进制去位或,这样的解释的话,就不会有问题了。

首先,要知道位或的原理,即有一为一,全零为零
3|4

011
100
----
111

3|4 = 7

8|3

1000
0011
-----
1011

8|3 = 11

4|4

100
100
----
100
4|4 = 4

理到这里,才算浅浅明白单竖杠’|'的使用,记录下来,以防下次迷糊!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/1886.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!