javascript生成guid
GUID:Globally Unique Identifer ,全局唯一标识符,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个4位十六进制数
什么时候前端需要guid
接触过数据库的同学,都知道每条数据都有一个id,表与表之间关联也主要是使用id来作为主外键。
在数据库中可以设置id值int自增长或者使用 GUID来标记这条数据。
当数据不需要存入数据库,而前端交互的过程中又需要识别每条数据,确保唯一性时,便需要前端生成一个guid分配给这条数据。
javascript生成伪guid
function guid() {
var d = new Date().getTime();
var guid = 'xxxx-xxxx-xxxx-xxxx'.replace(
/[xy]/g,
function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
});
return guid;
};
涉及到的javascript基础有: 当前时间毫秒数,字符串替换,随机数,求余运算,向下取整运算,位运算,数字转换为16进制数字字符串
最后得到类似这样的字符串:”47d6-e2b5-d7ad-8cdc”
问题:正则里面的y字符串和(r & 0x7 | 0x8) 这样的位运算的作用是啥?