How do I check for null values in JavaScript?

How can I check for null values in JavaScript? I wrote the code below but it didn't work.

if (pass == null || cpass == null || email == null || cemail == null || user == null) {      

    alert("fill all columns");
    return false;  

}   

And how can I find errors in my JavaScript programs?


Javascript is very flexible with regards to checking for "null" values. I'm guessing you're actually looking for empty strings, in which case this simpler code will work:

if(!pass || !cpass || !email || !cemail || !user){

Which will check for empty strings ( "" ), null , undefined , false and the numbers 0 and NaN

Please note that if you are specifically checking for numbers it is a common mistake to miss 0 with this method, and num !== 0 is preferred (or num !== -1 or ~num (hacky code that also checks against -1 )) for functions that return -1 , eg indexOf )


To check for null SPECIFICALLY you would use this:

if(variable === null && typeof variable === "object")

...or more simply:

if(variable === null)

This test will ONLY pass for null and will not pass for "" , undefined , false , 0 , or NaN .

The rest of this is in response to inorganik's comment, Yes, you can check each one individually.

You need to implement use of the absolutely equals: === and typeof to be absolutely sure with your checks.

I've created a JSFiddle here to show all of the individual tests working

Here is all of the output of the tests:

Null Test:

if(variable === null && typeof variable === "object")

- variable = ""; (false) typeof variable = string

- variable = null; (true) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



Empty String Test:

if(variable === "" && typeof variable === "string")

- variable = ""; (true) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number




Undefined Test:

if(variable === undefined && typeof variable === "undefined")

- variable = ""; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (true) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



False Test:

if(variable === false && typeof variable === "boolean")

- variable = ""; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (true) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number



Zero Test:

if(variable === 0 && typeof variable === "number")

- variable = ""; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (true) typeof variable = number

- variable = NaN; (false) typeof variable = number



NaN Test:

if(!parseFloat(variable) && variable != 0 && typeof variable === "number")

- variable = ""; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (true) typeof variable = number

As you can see, it's a little more difficult to test against NaN ;


just replace the == with === in all places.

== is a loose or abstract equality comparison

=== is a strict equality comparison

See the MDN article on Equality comparisons and sameness for more detail.

链接地址: http://www.djcxy.com/p/76652.html

上一篇: 我可以将变量设置为undefined或传递undefined作为参数吗?

下一篇: 如何检查JavaScript中的空值?