JavaScript中有两个特殊的值:undefined和null,在比较他们的时候要留心。
在读取未赋值的变量或试图读取对象没有的属性时得到的就是undefined值。
null则用于表示已经赋了一个值但该值不是有效的object、string、number或boolean值(也就是说所定义的是一个无值(no value))。
例如:
<script>
var myData = {
name: "test",
age: null,
};
document.writeln(myData.weather);
document.writeln(myData.name);
document.writeln(myData.age);
</script>
运行结果为:
undefined
test
null
区分null和undefined
如果想同等对待undefined和null,那么应该使用相等运算符(==),让JavaScript进行类型转换。此时值为undefined的变量会被认为与值为null的变量相等。
如果区分null和undefined,则应该使用等同运算符(===)。
例如:
<script>
var firstVal = null;
var secondVal;
var equality = firstVal == secondVal;
var identity = firstVal === secondVal;
document.writeln("Equality: " + equality);
document.writeln("Identity: " + identity);
</script>
运行结果为:
Equality: true
Identity: false
补充:
相等运算符(==)会尝试将操作数转换为同一类型以便判断是否相等。只判断两个值是否相等,而不管其类型。
等同运算符(===)不仅判断值是否相等,还会判断其类型是否相等。