zoukankan      html  css  js  c++  java
  • Javascript null和undefined

        Javascript的数据类型包括数字、字符串、布尔值、null、undefined和对象。其中null和undefined是两种特殊的原始类型,很容易混淆。今天就来剖析一下null和undefined这两种数据特殊类型的区别。

        null

        null是Javascript的关键字,它通常用来描述空值

        

    console.log(typeof null);//打印出"object"

        可以看出null是一个特殊的对象,含义是“非对象”。可以认为null是它自有类型的唯一一个成员,它可以表示数字、字符串、对象是“无值”的。因为null没有其他属性和方法了,比如说执行null.length,会报错:TypeError: Cannot read property 'length' of null。

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

    886 + null    //886
    123 * null    //0

        undefined

        undefined不是Javascript的关键字。undefined用未定义的值表示更深层次的“空值”。它是变量的一种取值,表面变量没有初始化。如果要查询对象属性或数组元素的值时返回undefined,说明这个属性或元素不存在。如果函数没有返回值,则返回undefined。引用没有提供实参的函数,函数形参的值也只会是undefined。在ECMAScript5中,undefined是只读的。typeof undefined,会返回“undefined”,表明“undefined”是这个类型的唯一成员。

        尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换。

    null == undefined;//返回ture
    null === undefined;//返回false

    另外,关于Javascript我还遇到一个有意思的现象:

    "" ==  0; //return true
    "" === 0;  //return false
    "" == "0"; //return false

    第一句比较怪异。原因是这样的,“==”是松散比较,也就是说如果比较的双方类型不一致,Javascript会先把它们转成同一类型,再做严格比较。如果双方中有一个为数字类型或布尔类型,则javascript会将它们转成数字类型或布尔类型,如果双方中有string类型而没有数值类型或布尔类型,则会把不是string类型强制转换为string类型。这段代码的第一句,比较双方是""和0,""会被强制转成Number型0,所以

    "" ==  0。

    参考:

    《JavaScript权威指南》44-45页

    区分JS中的undefined,null,"",0和false

    http://www.cnblogs.com/birdshome/archive/2005/03/04/111991.html

    解剖JavaScript中的null和undefined

    http://blog.csdn.net/leadzen/article/details/3899392

    stackoverflow

    http://stackoverflow.com/questions/12422064/why-javascript-treats-0-equal-to-empty-string

  • 相关阅读:
    python_paramiko_SSHException Invalid requirement, parse error at
    python_实现发送邮件功能
    人生格言-羊皮卷
    xshell的Solarized Dark配色方案
    vim常用的配置
    Hadoop1.2.1 HDFS原理
    Hadoop1.x目录结构及Eclipse导入Hadoop源码项目
    Hadoop1.2.1 出现Warning: $HADOOP_HOME is deprecated.的解决方案
    Hadoop1.2.1 启停的Shell 脚本分析
    Hadoop1.2.1 配置文件详解
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/3417297.html
Copyright © 2011-2022 走看看