Lodash 中的位运算
在阅读 lodash 的深拷贝源码的时候,发现有 FLAG 这样的变量。
CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG
代表的是做位运行算,按位或操作- CLONE_DEEP_FLAG - 控制是否进行深拷贝
- CLONE_SYMBOLS_FLAG - 控制是否克隆 symbol 属性
- CLONE_DEEP_FLAG 的值是 1 二进制表示是 0001
CLONE_SYMBOLS_FLAG 的值是 4,二进制表示是 0100
按位或计算如下:
0001
0100
0101
所以 1 | 4 二进制是 0101。结果是 5,
然后在传入 baseClone 的时候,
通过与运算来判断是否需要做某项操作。
之前我们传入的 bitmask 是 0101
然后 CLONE_DEEP_FLAG 是 0001
与运算得到的是 0001 (1),其他同理
也就是说可以通过或的操作把变量组合为一个变量
然后再用与操作,把变量解构成不同的变量