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))
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))
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
.
¡Gracias a todos! Los comentarios y respuestas ayudaron enormemente. – Upworks
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.
Pero '===' es más estricto que '==', por lo que no es realmente un reemplazo directo. – Blender
@Blender: es mucho más parecido al equivalente de las dos cosas que el OP especificó. – chaos
En realidad no es "Por mucho" ... – jondavidjohn
una diferencia de velocidad enorme, pero el primero es definitivamente más fácil de leer y tiene más sentido ...
¡Dang me ganaste a jsperf! –
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
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
Esas dos operaciones no hacen lo mismo. Elija el que sea apropiado para la tarea y no lo optimice prematuramente. – zzzzBov
Mira eso http://jsperf.com/regex-vs-string-equals/2 :-) –