var name = "someName";
if(name !=null) {
// do something
}
- I am right now using http://underscorejs.org/#isNull, how would i do
the same using
underscore.js
- Does it give any slight improvement in terms of performance for such functions.
var name = "someName";
if(name !=null) {
// do something
}
underscore.js
In underscore, you can use
if(!_.isNull(name)) {}
and in plain Javascript, you should use
if(name !== null) {}
You should avoid the loose inequality operator !=
because it does type coercion and undefined != null
will return false
.
Using plain Javascript is slightly faster because it doesn't have to invoke a function, but it will be imperceptible and it should hardly be a consideration.
I don't have a strong preference either way as far as readability goes, but it seems a little excessive and verbose to call a library function for such a simple check.
Well your original code is flawed because if name
is an empty string, false
, the number 0
or any other falsy value then it will be considered null
as far as your test is concerned.
As a general rule, calling ANY function is an overhead that should be avoided if possible. In this case, calling a function just to test if a value is null, when you could very easily just write if( name === null)
, is just stupid, IMO...
In underscore.js you must write this to achieve that functionality.
var name = "someName";
if(!(_.isNull(name ))) {
// do something
}
In underscore.js function isNull
is written like this
_.isNull = function(obj) {
return obj === null;
};
So the difference is using ==
in your code and ===
in underscore.js.For more details about that difference you can look in this question.
Which equals operator (== vs ===) should be used in JavaScript comparisons?
P.S. I will suggest to write your own condition instead of using any library in such simple place.
var name = "someName";
if(name !== null)) {
// do something
}
if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data
}else {//Not Valid}