当前位置: 首页 → 爱前端 → 

JavaScript

位运算在前端开发中的应用

 

前端开发当中鲜有涉及到位运算,因此,对其的应用也基本停留在语法层面。但最近遇到的一个需求,却令自己对位运算刮目相看。

产品要求在进行输入验证时,当且仅当全部有值或者全部为空时合法。此时,若用传统的if进行判断,将会有不少的分支,对于代码的测试和维护均是一个挑战。对于此情景,不禁联想到“异或”的特点,天然与此需求吻合。

于是,改变实现如下:

if (!name ^ !phone ^ !address) {
    ...
}

但结果在输入两项有值时失效,究其原因,列表如下:

输入

期望输出

实际输出

0

0

0

0

0

0

0

1

1

1

0

1

0

1

1

0

1

1

1

0

1

0

0

1

1

1

0

1

1

0

1

1

0

1

0

1

1

1

0

1

稍加分析,便可知当中的逻辑:两两相异或,结果便是期望的三者间的异或。而对于以上例子,结果只能保证有且只有一个有值或者全部有值。

因此,修复后的代码如下:

if (!name ^ !phone || !name ^ !address) {
    ...
}

至此,两个异或+一个或即完美实现需求。

🔚
 

*

*

*

*