2012-08-27 84 views
0

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

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

什么是in视为?运营商?

+4

关于[** in operator **]的MDN文档(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in)有很多示例。 –

+2

这与jQuery无关。 –

+0

http://interglacial.com/javascript_spec/a-11.html#a-11.8.7 – TheHe

回答

0

如果你的价值观是不是字符串,使用inCombining multiple conditions into one in Javascript所示的indexOf方法会大大效率较低的链状或测试,这两个要求,你的价值转换为字符串,并做一个字符串比较。比较变量与其原生值几乎总是更有效率。

假设您正在寻找与模式不匹配的值(例如查明您的测试编号是奇数还是2的幂次),那么您可以通过几件事来改进链式OR测试速度。例如,首先测试最可能的值会提高整体性能;例如,如果X是更经常5大于7,则:因为条件测试时,表达式为真终止

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

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

将在比长运行更有效。

假设你的价值字符串,则inindexOf方法不会变得比类似结构的链接或和,给浏览器变幻莫测更有效,可能会加重病情。除非您可以确定要测试的值中的模式,否则在找到匹配项之前不会检查每个值。