专栏首页互联网杂技JS中Null与Undefined的区别

JS中Null与Undefined的区别

Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。 Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

js 代码

  1. var oValue;
  2. alert(oValue == undefined); //output "true"

这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。

js 代码

  1. alert(null == document.getElementById('notExistElement'));

当页面上不存在id为"notExistElement"的DOM节点时,这段代码显示为"true",因为我们尝试获取一个不存在的对象。

js 代码

  1. alert(typeof undefined); //output "undefined"
  2. alert(typeof null); //output "object"

第一行代码很容易理解,undefined的类型为Undefined;第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。

js 代码

  1. alert(null == undefined); //output "true"

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。

js 代码

  1. alert(null === undefined); //output "false"
  2. alert(typeof null == typeof undefined); //output "false"

使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。

本文分享自微信公众号 - 交互设计前端开发与后端程序设计(interaction_Designer),作者:json

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-10-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么要用 Node.js

    这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正。 Node.js 是什么 传统意义上的 JavaScript 运行在浏览...

    前朝楚水
  • 微软已确认收购 GitHub!GitLab 发文祝贺

    上周末,微软正在洽谈准备全资收购 GitHub 的消息传的沸沸扬扬。彭博新闻社 6 月 4 日凌晨发布最新报道称,据熟悉此事的消息人士透露,微软已同意收购 Gi...

    前朝楚水
  • 移动前端开发之viewport的深入理解

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta...

    前朝楚水
  • null和undefined的区别

    在Js中null与undefined是两种基本数据类型,都可以用来表示"无"这个概念,但是在语义表达以及实际使用上是有所区别的。

    WindrunnerMax
  • 如何优雅地链式取值

    但是对于这种操作报出类似于Uncaught TypeError: Cannot read property 'goods' of undefined 这种错误也...

    用户1515472
  • JavaScript中undefined与null详解

    对于undefined和null我一直知道他们有很多区别,也知道一点关于他们的区别,但却不具体系统,因此总结了一下,主要心得如下:

    Javanx
  • JDK8新特性之Optional

    Optional是什么 java.util.Optional Jdk8提供 Optional,一个可以包含null值的容器对象,可以用来代替xx != null...

    Java技术栈
  • Python 基础系列--函数

    在中学数学中我们知道 y=f(x) 代表着函数,x 是自变量,y 是函数 f(x) 的值,给定 x 可以计算出对应的 y。在程序设计中,函数的功能是一样的,给定...

    somenzz
  • ReplicaManager源码解析1-消息同步线程管理

    基本上就是作三件事: 构造FetchRequest, 同步发送FetchRequest并接收FetchResponse, 处理FetchResponse, 这三...

    扫帚的影子
  • Hashtable源码解析(JDK1.8)

    1 package java.util; 2 3 import java.io.*; 4 import java.util.concu...

    武培轩

扫码关注云+社区

领取腾讯云代金券