消除JavaScript中的多个OR条件

时间:2012-08-27 17:28:39

标签: javascript

有关检查变量值是否可以是多个值之一的最有效方法的任何建议,而不是尝试使用与一堆||连接的long if条件(ORS)?

我看到像if (value in {'thing1':1, 'thing2':1, 'thing3':1})这样的东西,但我不完全确定它是如何工作的。

in被视为什么?操作员?

1 个答案:

答案 0 :(得分:0)

如果您的值不是字符串,那么使用inCombining multiple conditions into one in Javascript中显示的indexOf方法将比链式OR测试效率低得多,因为这两者都需要您将值转换为字符串并进行字符串比较。将变量与其原始值进行比较几乎总是更有效。

假设您正在寻找与模式不匹配的值(比如找出您的测试编号是奇数还是2的幂),那么您只需要做一些事情来提高链式OR测试的速度。例如,首先测试最可能的值将提高整体性能;例如,如果X通常是5比7,那么:

if (X == 5 || X == 7)
从长远来看,

会比以下更有效:

if (X == 7 || X == 5)

因为条件测试在表达式变为真时终止。

假设您的值字符串,inindexOf方法不会比类似构造的链式OR更有效,并且,鉴于浏览器变幻莫测,可能会更糟。除非您可以确定要测试的值中的模式,否则在找到匹配项之前无法检查每个值。