2012-05-25 19 views
14
var name = "someName"; 
if(name !=null) { 
    // do something 
} 
  1. jestem teraz za pomocą http://underscorejs.org/#isNull, jak mogłoby zrobić tak samo przy użyciu underscore.js
  2. Czy to daje żadnej nieznaczną poprawę w zakresie wydajności dla takich funkcji.

Odpowiedz

23

W podkreślenia, można użyć

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

i prostym JavaScript, należy użyć

if(name !== null) {} 

Należy unikać luźnych operator nierówności != ponieważ ma typ przymus i undefined != null zwróci false.

Używanie zwykłego kodu Javascript jest nieco szybsze, ponieważ nie musi wywoływać funkcji, ale będzie niedostrzegalne i nie powinno być brane pod uwagę.

Nie mam silnej preferencji w żaden sposób, jeśli chodzi o czytelność, ale wydaje się nieco przesadna i gadatliwa, aby wywołać funkcję biblioteczną dla tak prostego sprawdzenia.

1

Dobrze oryginalny kod jest błędna, ponieważ jeśli name jest pusty ciąg znaków, false liczba 0 lub jakakolwiek inna wartość falsy to będzie uznać null miarę Twój test jest zainteresowana.

Zasadą jest, że wywoływanie JAKIEJKOLWIEK funkcji jest obciążeniem, którego należy unikać, jeśli to możliwe. W takim przypadku wywołanie funkcji tylko w celu sprawdzenia, czy wartość jest zerowa, kiedy można bardzo łatwo napisać if(name === null), jest po prostu głupie, IMO ...

+1

Tylko dla osób, które zamierzają przyjść na to pytanie, nie „”, fałszywe i 0 nie pasuje null, tylko niezdefiniowane i zerowy dopasuje NULL przy użyciu == null. Po drugiej stronie, przy sprawdzaniu, czy == false (lub! Something) TO również będzie pasować do wartości null, undefined, 0, "", "0" i "false" – XIU

+0

@XIU Dziękuję. '" 0 "== false' jest zawsze tym, który mnie dostaje. Co za garnek ... – wchargin

+0

'[] == false' to ten, który niszczy mój umysł. – korisu

1

W pliku underscore.js musisz napisać, aby osiągnąć tę funkcję.

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

W underscore.js funkcji isNull jest napisane jak to

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

Więc różnica jest przy użyciu == w kodzie i === w underscore.js.For więcej szczegółów na temat tej różnicy można patrzeć w to pytanie.

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

PS: Sugeruję napisanie własnego warunku zamiast korzystania z dowolnej biblioteki w tak prostym miejscu.

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

-1 tylko wspominając o ekstremalnej prostocie pisania '=== null'.Tak, właśnie przegłosowałem Chucka Norrisa. –

+6

Największy błąd w twoim życiu: D –

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

Proszę opracuj swoją odpowiedź. – Shawn

Powiązane problemy