开发者

javascript check for not null

开发者 https://www.devze.com 2022-12-23 01:22 出处:网络
Below is a code snippet, where we retrieve a form value. Before further processing check if the value is not null..

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 !=

0

精彩评论

暂无评论...
验证码 换一张
取 消