位掩码与if.然后是JavaScript
Bitmasks vs if..then in JavaScript
我正在制作一个应用程序,其中包含相当多的标志检查在不同的地方,如
if (a && b && c) { func1() }
else if (a && !b && c) { func2() }
else if (!a && b && !c) { func3() }
...
有时在一个序列中可能有10次检查。
当有3张以上的支票时,这个看起来相当笨重。我读了位操作和位掩码技术,我认为它们可以给我一个优雅的解决方案。
虽然,我想知道在不同级别的程序员工作的真实项目中使用这些实践是否是一个好的实践。试着不成为一个聪明的家伙,但使代码更优雅,虽然易于阅读,我应该继续使用if...else
或我应该开始使用位操作?
是的,我认为按位是一个更好的解决方案。
const ACTIONS = {
0: func0,
1: func1,
2: func2,
3: func3,
4: func4
// ...
}
ACTIONS[a | b | c]()
您可能会发现使用带有二进制字面值的switch
块作为大小写标签会更清楚:
switch (foo){
case 0b111: /*corresponds to true-like a, b, and c*/
func1();
break;
case 0b101: /*corresponds to true-like a and c*/
func2();
break;
等。,其中foo
是a
, b
和c
的适当函数,可能使用4 * a + 2 * b + c
生成。
相关文章:
- Javascript运行php文件,然后下载文件
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 显示数字,然后每5秒随机更改一次(javascript)
- javascript:发送带有音频文件的POST,然后重定向到新页面
- 如何利用多链接延迟检查并显示ping结果,然后使用JavaScript选择最快的URL
- 多个下载链接到一个zip文件,然后再下载javascript
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 如何放置ÅÄ和#214;在javascript数组中,然后将其与html文本进行比较
- Javascript:将多个表打印成一行,然后再打印
- Javascript解析器本身是用类似ESPRIMA的Javascript编写的,这是如何工作的?然后谁解析ESPRIM
- 如何使用javascript验证表单中的数据,然后调用php页面
- Javascript onclick需要点击两次,然后会创建越来越多的服务器请求
- 椭圆字幕选择,然后在Photoshop中使用Javascript填充颜色
- Javascript重复模式匹配,然后输出到文本区域
- 使用JavaScript或AJAX从HTML表单中提取数据,然后将其传递给PHP
- JavaScript onclick在IE 9中工作两次,然后停止
- 如何获取XML值,然后使用javascript将它们输出到htm文件中
- 目标最后一个 LI Javascript 然后操作
- 如何清除本地存储,sessionStorage和cookies在javascript?然后取回