按位与运算符(&)在JavaScript权限控制中用于判断用户是否拥有某权限:权限值为2的幂次方(如1、2、4、8),组合用|,判断用&并显式比较结果是否等于目标权限值。

按位与运算符(&)在 JavaScript 中常用于权限控制,核心思路是:把不同权限映射为唯一的 2 的幂次方值(如 1、2、4、8…),用一个整数的二进制位表示多个权限的开启/关闭状态;再通过 & 运算判断某权限是否被包含。
权限值必须是 2 的幂次方
每个权限对应一个独立的二进制位,因此只能取 1, 2, 4, 8, 16... 这类值。这样它们的二进制形式只有一位是 1,互不干扰:
-
READ = 1→0b0001 -
WRITE = 2→0b0010 -
DELETE = 4→0b0100 -
ADMIN = 8→0b1000
组合权限用按位或(|)
用户拥有的权限是多个权限值的“并集”,用 | 合并:
-
const userPerms = READ | WRITE;→0b0001 | 0b0010 = 0b0011 = 3 -
const adminPerms = READ | WRITE | DELETE | ADMIN;→15
判断权限用按位与(&)
检查用户是否拥有某权限:对用户权限值和目标权限值执行 &,结果等于目标权限值即表示拥有:
立即学习“Java免费学习笔记(深入)”;
-
(userPerms & READ) === READ→true -
(userPerms & DELETE) === DELETE→false(因为3 & 4 = 0) - 注意:不能只写
if (userPerms & READ),因为非零即真,但若权限值本身是 0(非法)或逻辑误用,易出错;显式比较更安全。
实际使用建议
可封装成工具函数提升可读性和复用性:
const PERMS = {
READ: 1,
WRITE: 2,
DELETE: 4,
ADMIN: 8
};
function hasPermission(permBits, permission) {
return (permBits & permission) === permission;
}
// 使用
const user = PERMS.READ | PERMS.WRITE;
console.log(hasPermission(user, PERMS.READ)); // true
console.log(hasPermission(user, PERMS.ADMIN)); // false


















