`
solidsnake2007
  • 浏览: 28795 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Js中 null 和 undefined 的区别

    博客分类:
  • JS
阅读更多
[size=11px;]
    很多人或许对null和undefined这两个关键词比较困惑。

    希望看了这篇文章之后可以轻松的找到关键点。

   

    做个小实验

    

[code="js"]alert(null == undefined); // true
alert(null === undefined); //false



    这个小实验说明,如果这两个特殊类型都进行向下转型然后对比值的话是相等的。但是类型确实是不相等的,也就是说,他们两个实际上不是一个东西。


    再做个小实验


[code="js"]function a(x) {
    // 判断x是否传递
    if(x == null) {
        console.log("yes");
    }else {
        console.log("no");
    }
};

a();
print : yes



    这个例子的本意是判断参数x 是否传递, OK 我们不去传递,结果打印出了yes。我们想当然的认为好像这样是正确的做法。

    大错特错了!what? 为什么?
    好吧 我们换一种方式

[code="js"]a(null);
print: yes.
    它依然打印出yes。或许你会觉得,这样很好啊,一箭双雕。又能判断有没有传递又能判断参数是不是空。
    好吧,那我再举个例子!

[code="js"]function m1() {
    alert("没有参数, 支线1");
};

function m2(x) {
    alert("有参数,需要做操作, 支线2");
};

function sbss(x) {
    // 本意判断没有传递
    if(x == null) {
        m1();
    }else {
        m2(x);
    }
};
    我发现我永远无法执行m2,这显然是不对的!
    这时候我使用undefined来判断,效果就截然不同。
    这就是为什么很多书上说为什么不推荐使用null来判断对象是否存在。对于对象存在的概念,再次引入一个小例子,将清楚的说明这个问题:

[code="js"]if(a === undefined) {
    alert("对象不存在");
}
     上面的小片段我们并没有定义a 所以他会打印出“对象不存在”

[code="js"]var a;
if(a === undefined) {
    alert("对象不存在");
}
   至于这个,虽然我们定义了a, 但是并没有初始化, 没有初始化虽然他确实再上下文中占了一个位置,但是它没有初始化,这个时候系统依然认为他不是一个存在的对象。 所以依然会打印出“对象不存在”, 其实这是一个bug, 如何规避这个bug? 很简单。

[code="js"]var a == null;
if(a === undefined) {
    alert("对象不存在");
}

   这样,我们就不会再打印出“对象不存在”这句烦人的话了。
   上述就是null 和 undefined 的区别了,欢迎反驳。
[/size]
0
5
分享到:
评论
1 楼 chenhailong 2013-04-25  
看你写的代码
真是心痛

相关推荐

    理解javascript中undefined和null的区别

    理解javascript中undefined和null的区别

    javascript 中null和undefined区分和比较

    javascript 中null和undefined区分和比较 Undefined类型 Undefined 类型只有一个值,即特殊 undefined 。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined , 例如: var message; alert(...

    js判断undefined类型,undefined,null,NaN的区别

    js判断undefined类型,undefined,null,NaN的区别

    JavaScript中Null与Undefined的区别解析

    在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undefined类型只有一个值,即undefined。当声明的变量还未被...

    JavaScript中undefined和null的区别

    JavaScript中undefined和null的区别 JavaScript两个表示”无”的值:undefined和null。我在平时只是null用的多一点,undefined只是在报错中经常遇到。下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和...

    JavaScript null和undefined区别分析

    == undefined 那么这两者到底有啥区别呢? 请听俺娓娓道来… null 这是一个对象,但是为空。因为是对象,所以 typeof null 返回 ‘object’ 。 null 是 JavaScript 保留关键字。 null 参与数值运算时其值会自动转换...

    JavaScript中的null和undefined用法解析

    null和undefined属于js中两种不同的基本数据类型,都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,老实说,语法效果几乎没区别。并且在if语句的判断条件中,它们都会自动转为false,相等...

    JavaScript中的null和undefined区别介绍

    JavaScript中存在2个代表信息不存在的特殊值:null和undefined。个人认为可以从以下角度来理解这两个特殊值之间的区别: 1.null代表有存储信息的容器(比如之前被赋过值的变量),但该容器中的内容为空。 2.undefined...

    js中 关于undefined和null的区别介绍.docx

    js中 关于undefined和null的区别介绍.docx

    JavaScript面试题和答案

    evel函数可以接受一个字符串作为参数,并把此字符串当做一段javascript代码去执行,如果字符串执行结果是一个值则返回此值,否则返回undefined。如果参数不是一个字符串,则直接返回该参数 40.数组的join方法和字符...

    js判断undefined类型,undefined,null, 的区别详细解析

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时。当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断  var reValue=window.showModalDialog(“”,””,””); ...

    JS 中如何判断 undefined null.rar

    JS 中如何判断 undefined null.rar

    js删除对象/数组中null、undefined、空对象及空数组方法示例

    主要给大家介绍了关于js删除对象/数组中null、undefined、空对象及空数组的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编一起来看看吧

    JavaScript中的null和undefined解析

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。 总所周知:null == undefined ...

    浅谈JavaScript中null和undefined

    实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。  JavaScript还有第二个值来表示值的空缺,就是undefined啦,用未定义的值表示更深层次的“空值”。undefined出现有4...

    JavaScript中null与undefined分析

    JavaScript null undefined分析

Global site tag (gtag.js) - Google Analytics