作为一个前端转node开发的童鞋,每次碰到&这个操作符,都要纠结很久,这是什么意思?
先将两个数字转换成二进制,按位与,得出每位的值(1或0),将这个结果转换为十进制便是最后结果。
这篇文章主要是想说按位与的利与弊。(都是我推测的,毕竟都是前人写的代码)
以项目常用场景为对输入进行分类来说。分类是什么意思,作为判断条件
function func( variable ){
if(variable & 4 = 4){
……
}
……
}
利
1.速度
2.可扩展,比如variable是一个订单状态的话,某些状态属于某一种类型。后续订单状态增加,但还属于某种类型,就可以不用改代码了。
3.可交叉,分类可交叉。
variable & 4 = 4
,variable & 8 = 8
,variable & 16 = 16
…… 想同时满足多少个条件,这个variable都可以只是一个数字,而不是用逗号分隔的几个数字或字符串,或好几个标识符。
弊
1.不直观,可读性非常差,无法追溯。
2.上面这个问题导致了,前人的代码这样写,后人都不敢改,因为反推variable的值是不可穷举的
总的来说来是利大于弊,在合适的场景下。
网友评论