gpt4 book ai didi

javascript - 了解 base 16 中的 Javascript 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:44 24 4
gpt4 key购买 nike

我在 JavaScript 中有这个非常有用和干净的小函数:

CreateGuid: function () {
var guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});

return guid;
},

我想稍微修改一下,以便能够随机生成一个字母数字序列。

这个函数唯一我不明白的部分是:

r : (r & 0x3 | 0x8)

除了它是一个三元运算符这一事实之外,它还有什么作用?

最佳答案

看一下0x3和0x8的二进制写法可能会更清楚:

 0x3.toString(2) => 11
0x8.toString(2) => 1000

我们在这里做的是位运算:

  • 首先是 and 位级别的 11(只 chop 到最后两位,即 %4 ),

  • 然后是 or1000(设置一位,添加 8)。

整体写成

可能会不那么困惑
var guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/x/g, function(){
return (Math.random()*16|0).toString(16)
})
.replace(/y/, function(){
return (Math.random()*4+8|0).toString(16)
})

关于javascript - 了解 base 16 中的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com