闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

javascript中null 和 undefined的区别

2013-03-14 约 1 分钟读完 搬砖秘籍

之前写代码的时候遇到了一个比较奇怪的问题,在判断一个==null的时候可以通过,但是===null的时候却运行不了,也就是说null==nudefined但是null!==undefined。这是一个比较好玩的问题,于是写了个代码测试下:

var a1;
var a2 = true;
var a3 = 1;
var a4 = "Hello";
var a5 = new Object();
var a6 = null;
var a7 = NaN;
var a8 = undefined;

alert(typeof a);   //显示"undefined"
alert(typeof a1);  //显示"undefined"
alert(typeof a2);  //显示"boolean"
alert(typeof a3);  //显示"number"
alert(typeof a4);  //显示"string"
alert(typeof a5);  //显示"object"
alert(typeof a6);  //显示"object"
alert(typeof a7);  //显示"number"
alert(typeof a8);  //显示"undefined"

去搜索了下其他内容:

null

  这是一个对象,但是为空。因为是对象,所以 typeof null  返回 'object' 。

    null 是 JavaScript 保留关键字。

    null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:

表达式:123 + null 结果值:123

表达式:123 * null 结果值:0

undefined

undefined是全局对象(window)的一个特殊属性,其值是未定义的。但 typeof undefined 返回 'undefined' 。

      虽然undefined是有特殊含义的,但它确实是一个属性,而且是全局对象(window)的属性。请看下面的代码:

    alert('undefined' in window);   //输出:true
var anObj = {};


     alert(‘undefined’ in anObj);    //输出:false

也就是说:undefined是window对象的一个属性,但却不是anObj对象的一个属性

参考连接:这里还有这里