Использование underscore.js для нулевой проверки

var name = "someName";
if(name !=null) {
   // do something
}
  • Я сейчас использую http://underscorejs.org/#isNull, как бы я это сделал то же самое, используя underscore.js
  • Оказывает ли какое-либо незначительное улучшение в плане производительности для таких функции.

Ответы

Ответ 1

В подчеркивании вы можете использовать

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

и в простом Javascript, вы должны использовать

if(name !== null) {}

Вам следует избегать оператора свободного неравенства !=, потому что он вводит принуждение и undefined != null возвращает false.

Использование простого Javascript немного быстрее, потому что ему не нужно вызывать функцию, но это будет незаметно, и это вряд ли стоит рассматривать.

У меня нет сильного предпочтения в любом случае, насколько читабельность идет, но для такой простой проверки кажется немного излишним и многословным, чтобы вызвать библиотечную функцию.

Ответ 2

Ну, ваш исходный код испорчен, потому что если name - пустая строка, false, число 0 или любое другое значение фальшивки, то это будет считаться null в отношении вашего теста.

Как правило, вызов функции ANY - это накладные расходы, которых следует избегать, если это возможно. В этом случае вызов функции только для проверки, если значение равно null, когда вы могли бы просто просто написать if( name === null), просто глупо, IMO...

Ответ 3

В underscore.js вы должны написать это для достижения этой функциональности.

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

В функции underscore.js isNull написано так:

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

Таким образом, разница заключается в использовании == в вашем коде и === в underscore.js.Для получения более подробной информации об этой разнице вы можете посмотреть в этом вопросе.

Какой оператор equals (== vs ===) должен использоваться при сравнении JavaScript?

P.S. Я предлагаю написать собственное условие, а не использовать любую библиотеку в таком простом месте.

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

Ответ 4

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