
假设有这样一个场景,我们需要统计员工的技术栈,目前我们需要标记的技术有 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 << 1,
HTML: 1 << 2,
WEB_GL: 1 << 3
}
// Use this value to store a user's tech-stack
let skills = 0
// add a skill for the user
JavaScript 枚举优化:Vue 源码启发的高效实现

本文介绍了如何从 Vue 源码中获取灵感,使用二进制位操作来优化枚举的定义和使用,提高代码效率。通过示例展示了如何定义和检查枚举项,同时指出这种方法的限制在于枚举项不能超过 31 个。性能测试显示,使用位运算的枚举比传统的数组或映射方法更具优势。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



