Below is a code snippet, where we retrieve a form value. Before further processing check if the value is not null..
var val = document.FileList.hiddenInfo.value;
a开发者_开发百科lert("val is " + val); // this prints null which is as expected
if (val != null)
{
alert("value is "+val.length); // this returns 4
}
else
{
alert("value* is null");
}
Any ideas why it happens so.. ??
this will do the trick for you
if (!!val) {
alert("this is not null")
} else {
alert("this is null")
}
There are 3 ways to check for "not null". My recommendation is to use the Strict Not Version.
1. Strict Not Version
if (val !== null) { ... }
The Strict Not Version uses the "Strict Equality Comparison Algorithm" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6. The !==
has faster performance, than the !=
operator because the Strict Equality Comparison Algorithm doesn't typecast values.
2. Non-strict Not Version
if (val != 'null') { ... }
The Non-strict version uses the "Abstract Equality Comparison Algorithm" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3. The !=
has slower performance, than the !==
operator because the Abstract Equality Comparison Algorithm typecasts values.
3. Double Not Version
if (!!val) { ... }
The Double Not Version !!
has faster performance, than both the Strict Not Version !==
and the Non-Strict Not Version !=
(https://jsperf.com/tfm-not-null/6). However, it will typecast "Falsey" values like undefined
and NaN
into False (http://www.ecma-international.org/ecma-262/5.1/#sec-9.2) which may lead to unexpected results, and it has worse readability because null
isn't explicitly stated.
It's because val is not null
, but contains 'null'
as a string.
Try to check with 'null'
if ('null' != val)
For an explanation of when and why this works, see the details below.
Use !==
as !=
will get you into a world of nontransitive JavaScript truth table weirdness.
You should be using the strict not equals
comparison operator !==
so that if the user inputs "null"
then you won't get to the else
.
Check https://softwareengineering.stackexchange.com/a/253723
if(value) {
}
will evaluate to true if value is not:
null
undefined
NaN
empty string ("")
0
false
This should work fine..
if(val!= null)
{
alert("value is "+val.length); //-- this returns 4
}
else
{
alert("value* is null");
}
It is possibly because the value of val
is actually the string "null"
rather than the value null
.
If you want to be able to include 0 as a valid value:
if (!!val || val === 0) { ... }
This will work:
if (val) {
alert("Not null");
} else {
alert("Null");
}
Use double not version
if (!!val) { ... }
The Double Not Version !! has faster performance, than both the Strict Not Version !== and the Non-Strict Not Version !=
精彩评论