我正在寻找一种更优雅的匹配方式,无论是在JavaScript中还是在JavaScript中。
使用字符串,我们可以执行以下操作:
"test".match(/test|otherstring/)
但是数字对象没有方法匹配。我们当然可以添加这个,但我的应用程序将被放入一个包含数百个单独应用程序的大型国际站点,因此这将是一个危险的举措。
此时我有两个选择:
String(myNumber).match(/test|numbers/)
或者:
if(number === test1 || number === test2)
但这些解决方案对我来说都不是很优雅。我想要的是能够做到:
number === test1||test2;
但如果number===test1
如果不返回test2
,则结果为真。或使用括号:
number === (test1||test2)
但这仅比较第一次测试并返回结果。
在这里,我们可以通过JavaScript wierdness获得更多乐趣。任何能告诉我为什么会出现以下序列的人都会获得奖励积分:
13===(13|13)
# true
13===(12|13)
# true
13===(1|13)
# true
13===(133|13)
# false
13===(13|133)
# false
答案 0 :(得分:0)
这个问题
13===(13|13)
# true
13===(12|13)
# true
13===(1|13)
# true
13===(133|13)
# false
13===(13|133)
# false
单个管道是按位OR。
示例
alert(6 | 10); // should show 14
8 4 2 1
-------
0 1 1 0 = 6 (4 + 2)
1 0 1 0 = 10 (8 + 2)
=======
1 1 1 0 = 14 (8 + 4 + 2)