先来看 null,它是空对象:
//显示object
alert(typeof null);
null 参与数值运算会自动转为0
再看来undefined,它是window的一个特殊属性,其值是未定义的:
//弹出undefined
alert(typeof undefined);
//弹出true
alert('undefined' in window);
1,undefined参与任何数值运算结果都是NaN
备注:NaN是全局对象(window)的另一个特殊属性
例如
alert('NaN' in window);//true
Null 和 Undefined
Null 类型只有一个null值
Undefined类型只有一个undefined值
document.getElementById("不存在的元素");//返回null
document.getElementById("不存在的元素").value;//返回的是undefineds
ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
但是,如果在一些情况下,一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
方法1,
方法2,
<script>
alert('undefined' in window);//true
alert(typeof null);//object
alert(typeof undefined);//undefined
alert(typeof Null);//undefined
alert(typeof Undefined);//undefined
alert(3+null);//3
alert(3+undefined);//NaN
alert(null == undefined);//true
alert(null === undefined);//falses
alert(document.getElementById("no_exist_obj"));//null
alert(document.getElementById("no_exist_obj").value);//脚本报错
</script>
备注:
1、typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"。
2、js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。