0

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

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

in认为是什么?运营商?

4

1 回答 1

0

如果您的值不是字符串,则使用in在 Javascript 中将多个条件组合为一个中indexOf所示的方法将比链式 OR 测试效率低得多,因为这两者都要求您将值转换为字符串并进行字符串比较. 将变量与其本机值进行比较几乎总是更有效。

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

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

从长远来看,将比:

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

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

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

于 2012-08-27T18:48:48.713 回答