javaScript中有五种空值和假值,分别为false,null,undefined,“”,0。从广义上来说,这五个值都是对应数据类型的无效值或空值。

这五个值的共同点是在执行if语句时都会执行false分支,执行对应的非语句的时候都执行true分支。

1. undefined

在javaScript中,undefined派生自null,变量为初始化时浏览器默认变量为undefined。代码示例:

1
2
var str;
alert(str);//undefined

另外

1
2
3
if(undefined == null) {
alert("undefined == null 为true");
}

弹出:undefined == null 为true

2. null

null代表一个不存在的对象,代码示例:

1
2
var obj = document.getElementById("btn");
alert(obj);//null

null的类型虽然是object,但是null不具有对象的特性。我们不能执行null.toString(),null.constructor等对象实例的默认调用。

null ==undefined 的执行结果为true。此外,将变量赋值为null,便于垃圾回收处理。

3. “”, 0, false

“”,0,false在if语句中表现为假值,但是他们都是有意义的数据,只是被用作空值或假值。

“”.toString(),(0).toString(),false.toString()都是合法的可执行语句。

另外

1
2
3
4
5
6
7
8
9
if(0 == []){
alert("0 ==[] 为true");
}
if(0 == ''){
alert("0 =='' 为true");
}
if(0 == false){
alert("0 == false 为true");
}

浏览器依次弹出

1
2
3
4
5
6
0 == [] 为true
0 == ''true
0 ==falsetrue
if("" == false){
alert('""== false 为true');
}

4. js五种空值类型

1
2
3
4
5
typeof(undefined) == 'undefined'
typeof(null) == 'object'
typeof("") == 'String'
typeof(0) == 'number'
typeof(false) == 'boolean'
SpringMVC与Struts2对比总结