javascript权限控制用位运算,每个权限为2的幂(如read=1、write=2),通过|组合、&判断、&=~移除、^=切换,高效紧凑但需后端校验。

JavaScript 中高效使用位运算符做权限控制,核心是把权限当作二进制位来管理:每个权限对应一个 2 的幂次值(如 1、2、4、8),用一个整数就能紧凑表示多个开关状态,判断和操作都快且无歧义。
定义清晰的权限常量
用 const 声明带语义的权限标识,确保每个值只占一位:
-
READ = 1(二进制
0001) -
WRITE = 2(
0010) -
DELETE = 4(
0100) -
EXECUTE = 8(
1000)
避免用 0、3、5 等非幂次数,否则位会重叠,导致判断失效。
组合与存储用户权限
用按位或 | 合并权限,结果仍是整数,便于存储或传输:
- 用户有读+写权限:
let perm = READ | WRITE;→ 值为3(0011) - 添加删除权限:
perm |= DELETE;→ 变成7(0111) - 初始值建议设为
0,表示无任何权限
准确判断单个或多个权限
用按位与 & 判断,注意比较方式:
- 是否有读权限:
(perm & READ) !== 0或!!(perm & READ) - 是否同时拥有读和写:
(perm & (READ | WRITE)) === (READ | WRITE) - 是否至少有其一:
!!(perm & (READ | DELETE))
切忌写成 perm & READ & WRITE,这是链式计算,逻辑错误。
安全修改权限状态
不直接赋值,而是用位运算动态调整:
- 移除写权限:
perm &= ~WRITE;(~WRITE是取反,清零对应位) - 切换执行权限(有则关、无则开):
perm ^= EXECUTE; - 重置全部权限:
perm = 0;
前端可用它控制按钮显隐,但后端仍需独立校验——位运算只是高效表达,不是安全替代。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











