假设有这样一个场景,我们需要统计员工的技术栈,目前我们需要标记的技术有 CSS、JavaScript、HTML、WebGL。
然后我可以这样写枚举:
const SKILLS = { CSS: 1 , JS: 2, HTML: 3, WEB_GL: 4 }
之前是这样写的,但是,最近看vue源码的时候,发现了一个高效使用枚举的技巧,在这里分享给大家。
定义枚举
我们可以这样写上面的枚举:
const SKILLS = { CSS: 1 , JS: 1 << 1, HTML: 1 << 2, WEB_GL: 1 << 3 }
<< 是什么?
左移运算符 (<<) 将第一个操作数左移指定位数。向左移动的多余位被丢弃。零位从右侧移入。
例如:
- 二进制的 1 是 0000 0001 ,左移一位是 0000 0010 ,即十进制的 2 。
- 如果我们将其移动两位,它将变为 0000 0100 ,即十进制的 4。
- 如果我们将其移动三位,它将变为 0000 1000 ,即十进制的 8。
- 如果我们将其移动 N 位,它将变为 2^Nin 十进制。
用法
按照上面的方法定义好枚举后,我们可以这样使用:
const SKILLS = { CSS: 1 , JS: 1 <<