JS脚本中Null与Undefined的区别
类别:Web前端 浏览量:3299
时间:2013-8-15 JS脚本中Null与Undefined的区别
JS脚本中Null与Undefined的区别JavaScript 中一共有 5 种基本类型,分别是 String、Number、Boolean、Null 和 Undefined 。前 3 种都比较好理解,后面两种就稍微复杂一点。 Null 类型只有一个值,就是 null ; Undefined 类型也只有一个值,即 undefined 。 null 和 undefined 都可以作为字面量(literal)在 JavaScript 代码中直接使用。
null 与对象引用有关系,表示为空或不存在的对象引用。当声明一个变量却没有给它赋值的时候,它的值就是 undefined 。
一、undefined 的值会出现在如下情况:
1、从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。
2、一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。
3、JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。
二、下面通过一段代码说明两者的区别
//这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。
var oValue;
alert(oValue == undefined); //output "true"
//当页面上不存在id为"notExistElement"的DOM节点时,这段代码显示为"true",因为我们尝试获取一个不存在的对象
alert(null == document.getElementById('notExistElement'));
//第一行代码很容易理解,undefined的类型为Undefined;
//第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。
alert(typeof undefined); //output "undefined"
alert(typeof null); //output "object"
//ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
alert(null == undefined); //output "true"
//如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
//使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。
alert(null === undefined); //output "false"
alert(typeof null == typeof undefined); //output "false"
您可能感兴趣
- javascript怎么生成html控件(JavaScript+html实现前端页面滑动验证2)
- javascript 模块原理(详解JavaScript引擎V8执行流程)
- javascript 函数生命周期(JavaScript sleep睡眠函数的使用)
- JavaScript生成GUID的方法
- redux实例教程(详解JavaScript状态容器Redux)
- javascriptloop教程(JavaScript中的AOP编程的基本实现)
- javascript的作用域详解精简版(浅谈JavaScript 中的延迟加载属性模式)
- jquery五子棋javascript(原生JavaScript实现简单五子棋游戏)
- javascript四种数组(javascript数组includes、reduce的基本使用)
- Javascript操作DOM
- javascript学习参数(详解JavaScript堆栈与拷贝)
- javascript怎么判断对象类型(JavaScript对象内置对象,值类型和引用类型讲解)
- javascript将字符串转换成数组(如何将JavaScript将数组转为树形结构)
- javascript写计算器教程(基于JavaScript实现简易计算器)
- javascript如何操作文档元素(JavaScript操作元素实例大全)
- jspromise原理(JavaScript使用promise处理多重复请求)
- 东南亚安全吗(好不好挣钱)
- 潘长江小品《照亮全家福》台词剧本完整版(潘长江小品照亮全家福台词剧本完整版)
- 一窗通办政务服务小品剧本(一窗通办政务服务小品剧本)
- 刘韬涛丁子贺小品《根治低头族》台词剧本(刘韬涛丁子贺小品根治低头族台词剧本)
- 看完《夺冠》,黄渤的演技我实在夸不起来,彭昱畅反令人惊喜(黄渤的演技我实在夸不起来)
- 黄渤泪目 我的痴呆父亲,我内心永远的痛(黄渤泪目我的痴呆父亲)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9