解剖JavaScript中的null和undefined

作者:李战 来源:软件真谛 时间:2009-03-01 12:49:00 

在JavaScript开发中,被人问到:null与undefined到底有啥区别?

一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。

总所周知:null == undefined

  但是:null !== 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对象的一个属性。



注意:尽管undefined是有特殊含义的属性,但却不是JavaScript的保留关键字。

undefined参与任何数值计算时,其结果一定是NaN。

随便说一下,NaN是全局对象(window)的另一个特殊属性,Infinity也是。这些特殊属性都不是JavaScript的保留关键字!

标签:undefined,null,JavaScript,区别
0
投稿

猜你喜欢

  • 使用pandas计算环比和同比的方法实例

    2021-02-15 18:06:34
  • asp截取指定英汉混合字符串_支持中文

    2011-04-19 10:39:00
  • golang如何实现抓取IP地址的蜘蛛程序详解

    2024-04-25 15:08:05
  • 在JScript中使用RecordSet对象的GetRows方法

    2008-01-16 13:12:00
  • 基于Jquery+Ajax+Json实现分页显示附效果图

    2024-05-21 10:12:27
  • Keepalived+HAProxy实现MySQL高可用负载均衡的配置

    2024-01-18 23:08:52
  • YOLOv5车牌识别实战教程(八)Web应用与API开发

    2022-12-29 23:44:22
  • Windows mysql命令行导入 .sql文件

    2010-12-03 16:12:00
  • Python处理mat文件的三种方式小结

    2022-01-21 23:04:30
  • python的等深分箱实例

    2022-11-30 01:01:20
  • 批量获取及验证HTTP代理的Python脚本

    2023-11-19 12:10:34
  • PHP数据类型之布尔型的介绍

    2023-11-14 21:56:00
  • 一文带你理解MySql中explain结果filtered

    2024-01-19 23:01:35
  • 对YOLOv3模型调用时候的python接口详解

    2023-05-31 00:58:57
  • python网络爬虫 CrawlSpider使用详解

    2023-03-19 21:12:56
  • python删除不需要的python文件方法

    2021-10-02 23:29:11
  • Vue如何引入远程JS文件

    2023-07-02 16:34:13
  • Python实现TOPSIS分析法的示例代码

    2021-05-09 19:32:47
  • SQLServer2005重建索引前后对比分析

    2024-01-27 17:27:09
  • Python图像处理之图像清晰度评价

    2021-12-22 13:58:44
  • asp之家 网络编程 m.aspxhome.com