2011-12-21 9 views
5

que es más rápido:que es más rápido: si (var == 'valor') o si (/value/.test(var))

if (var == 'value') 

o

if (/value/.test(var)) 
+3

lugar de preguntar cuál es el más rápido, se debe considerar cuál es más claro, más evidente , y corregir (supongo que hay alguna diferencia para los valores que no son cadenas). – delnan

+0

Esas dos operaciones no hacen lo mismo. Elija el que sea apropiado para la tarea y no lo optimice prematuramente. – zzzzBov

+0

Mira eso http://jsperf.com/regex-vs-string-equals/2 :-) –

Respuesta

6

if (a == 'b') será más rápido que if (/b/.test(a)), pero no son llamadas idénticas.

'something' == 'some' es false, mientras que /some/.test('something') es true.

La única razón para cambiar de una a la otra sería si la otra es más apropiada. Si le preocupa la velocidad, compare su secuencia de comandos y compruebe dónde están los cuellos de botella antes de preocuparse por una declaración específica de if.

+0

¡Gracias a todos! Los comentarios y respuestas ayudaron enormemente. – Upworks

8

if(var == 'value'). Por mucho. Pero si realmente quieres rápido, haz if(var === 'value'). La equivalencia estricta tiene mucho menos trabajo que hacer que la equivalencia con coerción de tipo.

+1

Pero '===' es más estricto que '==', por lo que no es realmente un reemplazo directo. – Blender

+0

@Blender: es mucho más parecido al equivalente de las dos cosas que el OP especificó. – chaos

+0

En realidad no es "Por mucho" ... – jondavidjohn

1
No

una diferencia de velocidad enorme, pero el primero es definitivamente más fácil de leer y tiene más sentido ...

http://jsperf.com/string-vs-regex-test/2

+0

¡Dang me ganaste a jsperf! –

+0

Esa prueba no es totalmente apropiada para el caso del OP (incluso si suponemos que quiso decir '/^value $ /. Test (var)'). La equivalencia no es buena porque la prueba no es sensible a las mayúsculas y minúsculas, por lo que las pruebas que son nominalmente de '==' y '===' en realidad absorben el costo (bastante elevado) de 'toLowerCase()'. – chaos

Cuestiones relacionadas