`
solidsnake2007
  • 浏览: 29803 次
  • 性别: 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  
看你写的代码
真是心痛

相关推荐

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

    JavaScript 中的 undefined、null、NaN 的区别 在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 ...

    理解javascript中undefined和null的区别

    理解javascript中undefined和null的区别

    JavaScript中Null与Undefined的区别解析

    JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...

    JavaScript中undefined和null的区别

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

    javascript 中null和undefined区分和比较

    总的来说,理解`undefined`和`null`的区别是JavaScript编程中的关键。`undefined`常用于表示变量声明但未赋值,而`null`则是一个明确的空对象引用。在编写代码时,明确初始化变量并合理使用`null`可以帮助减少潜在的...

    JavaScript null和undefined区别分析

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

    JavaScript中的null和undefined用法解析

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

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

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

    JavaScript中的null和undefined区别介绍

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

    深入解析JavaScript中的`undefined`与`null`:探索它们的异同

    在JavaScript编程中,undefined和null是两种特殊的值,它们在处理变量和对象时扮演着重要的角色。尽管它们都表示“没有值”的概念,但它们之间存在着一些关键的区别。本文将深入探讨undefined和null的含义、用途以及...

    JS 中如何判断 undefined null.rar

    在JavaScript(JS)编程中,`undefined` 和 `null` 是两种不同的特殊值,它们各自表示不同的含义。理解和正确地判断这两个值对于编写健壮的JavaScript代码至关重要。在这篇文章中,我们将深入探讨如何在JavaScript中...

    浅谈JavaScript中null和undefined

    在JavaScript编程语言中,null和undefined是两个非常基础且常用的特殊值。尽管它们看起来相似,但它们在JavaScript中有着本质上的区别和各自的应用场景。本文将详细探讨这两个特殊值的相同点和不同点,以及在实际...

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

    在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...

    JavaScript中null与undefined分析

    在JavaScript编程语言中,`null`和`undefined`是两个非常基础且重要的概念。虽然它们经常被用来表示“无值”或“空值”,但它们之间还是存在着一些关键性的区别。本文将详细探讨这两个概念的含义、用法以及它们之间...

    JavaScript的null和undefined区别示例介绍

    在JavaScript代码实践中,了解null和undefined的区别是非常重要的,因为它们经常在程序中被使用。例如,在判断一个对象是否已被正确初始化时,我们可能会使用if(!object)这样的语句。此时,如果对象值是null,则被视...

Global site tag (gtag.js) - Google Analytics