🎡

vue3枚举位运算

运算符
用法
描述
按位与(AND)
a & b
对于每一个比特位,只有两个操作数相应的比特位都是 1 时,结果才为 1,否则为 0。
按位或(OR)
a | b
对于每一个比特位,当两个操作数相应的比特位至少有一个 1 时,结果为 1,否则为 0。
按位异或(XOR)
a ^ b
对于每一个比特位,当两个操作数相应的比特位有且只有一个 1 时,结果为 1,否则为 0。
按位非(NOT)
~a
反转操作数的比特位,即 0 变成 1,1 变成 0。
左移(Left shift)
a << b
将 a 的二进制形式向左移 b (< 32) 比特位,右边用 0 填充。
有符号右移
a >> b
将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位。
无符号右移
a >>> b
将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。
 
| 就是加 & 就是去查
 
shapeFlag 既能描述自己也能描述children
1<<n === 2^n
 
export const enum ShapeFlags { ELEMENT = 1, FUNCTIONAL_COMPONENT = 1 << 1, STATEFUL_COMPONENT = 1 << 2, TEXT_CHILDREN = 1 << 3, ARRAY_CHILDREN = 1 << 4, SLOTS_CHILDREN = 1 << 5, TELEPORT = 1 << 6, SUSPENSE = 1 << 7, COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8, COMPONENT_KEPT_ALIVE = 1 << 9, COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT }
 

add flag

vnode.shapeFlag |= type