2012-05-25 20 views
14
var name = "someName"; 
if(name !=null) { 
    // do something 
} 
  1. estoy usando en este momento http://underscorejs.org/#isNull, ¿cómo lo haría la misma utilizando underscore.js
  2. ¿Da una mejora leve en términos de rendimiento para este tipo de funciones.

Respuesta

23

En subrayado, puede utilizar

if(!_.isNull(name)) {} 

y en la llanura Javascript, se debe utilizar

if(name !== null) {} 

Debe evitar el operador de desigualdad suelta != ya que escriba la coacción y undefined != null devolverá false.

El uso de Javascript plano es un poco más rápido porque no tiene que invocar una función, pero será imperceptible y no debería ser una consideración.

No tengo una preferencia fuerte de ninguna manera en lo que respecta a la legibilidad, pero parece un poco excesivo y detallado llamar a una función de biblioteca para una comprobación tan simple.

1

bien su código original es defectuoso porque si name es una cadena vacía, false, el número 0 o cualquier otro valor Falsy entonces será considerado null en lo que se refiere a la prueba.

Como regla general, llamar a CUALQUIER función es una sobrecarga que debe evitarse si es posible. En este caso, llamar a una función solo para probar si un valor es nulo, cuando podría escribir if(name === null), es estúpido, IMO ...

+1

sólo para las personas que van a venir a esta pregunta, no "" falso y no coincidirá con 0 nulo, solamente indefinido y nulo coincidirá con nula cuando se usa == null. Por otro lado, cuando compruebe == falso (o! Algo) ENTONCES también coincidirá nulo, indefinido, 0, "", "0" y "falso" – XIU

+0

@XIU Gracias. '" 0 "== falso' es siempre el que me atrapa. Qué ganga ... – wchargin

+0

'[] == falso' es lo que me sorprende. – korisu

1

En underscore.js debe escribir esto para lograr esa funcionalidad.

var name = "someName"; 
if(!(_.isNull(name))) { 
    // do something 
} 

En función underscore.js isNull se escribe así

_.isNull = function(obj) { 
    return obj === null; 
    }; 

Así que la diferencia está utilizando == en el código y en === underscore.js.For más detalles sobre esa diferencia se puede ver en esta pregunta.

Which equals operator (== vs ===) should be used in JavaScript comparisons?

P. S. Sugeriré que escribas tu propia condición en lugar de usar cualquier biblioteca en un lugar tan simple.

var name = "someName"; 
if(name !== null)) { 
    // do something 
} 
+1

-1 por solo mencionar la extrema simplicidad de simplemente escribir '=== null'.Sí, acabo de rechazar a Chuck Norris. –

+6

El mayor error de su vida: D –

0
if ((!(_.isUndefined(data)) || _.isEmpty(data))) { 
//Valid Data 
}else {//Not Valid} 
+2

Por favor, amplíe su respuesta. – Shawn

Cuestiones relacionadas