Использование 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}