权限系统用位运算实现,每个权限对应2的幂次值,如读权限为1(即2⁰),通过二进制位标志表示开关状态,节省空间且计算高效。

用JavaScript的位运算符设计权限系统,核心是把每个权限当作一个二进制位来表示。这种方式节省空间、计算高效,适合管理多个开关类权限。
1. 权限用位标志表示
每个权限对应一个唯一的2的幂次值(即只有一位为1的二进制数):
- 读权限 → 1
- 写权限 → 1
- 删除权限 → 1
- 执行权限 → 1
这样可以用一个整数存储多个权限组合。比如同时有“读”和“写”权限,值就是 1 | 2 = 3。
2. 使用按位或设置权限
给用户添加权限时,使用 | 运算符合并权限:
立即学习“Java免费学习笔记(深入)”;
let userPermissions = 0; userPermissions |= 1; // 添加读权限 userPermissions |= 2; // 添加写权限 // 现在 userPermissions 是 3(即 0011)
3. 使用按位与判断权限
检查是否拥有某个权限,使用 & 运算符:
function hasPermission(perm, flag) {
return (perm & flag) !== 0;
}
hasPermission(userPermissions, 1); // true,有读权限
hasPermission(userPermissions, 4); // false,无删除权限
4. 使用按位异或或取反修改权限
移除某个权限可以用 & ~flag 的方式:
// 移除写权限 userPermissions &= ~2; // 此时 userPermissions 变成 1
也可以用异或 ^ 切换权限状态(有则删,无则加):
userPermissions ^= 2; // 切换写权限
基本上就这些。用位运算做权限系统简单高效,特别适合前端控制按钮显示或做粗粒度校验。注意权限数量别超过31个(避免JS整数溢出问题),后端仍需做真实校验。










