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里字符串描述(JavaScript字符串操作的四个实用技巧)
- js使用递归解析(关于JavaScript递归经典案例题详析)
- js怎么做一个计时器(JavaScript实现简单计时器)
- js防抖用法(JavaScript的防抖和节流案例)
- mvc JavaScriptResult的用法
- javascript写计算器教程(基于JavaScript实现简易计算器)
- JavaScript instanceof 的用法
- JavaScript中实现AES加密解密
- jquery五子棋javascript(原生JavaScript实现简单五子棋游戏)
- javascript怎么判断对象类型(JavaScript对象内置对象,值类型和引用类型讲解)
- javascript dom事件模型(JavaScript WebAPI、DOM、事件和操作元素实例详解)
- html注册表单验证代码(JavaScript+html实现前端页面随机二维码验证)
- javascript 开发网站(帮你提高开发效率的JavaScript20个技巧)
- javascript 模块原理(详解JavaScript引擎V8执行流程)
- javascript检测内容改变了(JavaScript 检测文件的类型的方法)
- js打印斐波那契数列(JavaScript输出斐波那契数列的实现方法)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
热门推荐
- python编程ide工具(这6款Python IDE&代码编辑器,你都用过吗?)
- python怎么输出一个矩阵(python实现转圈打印矩阵)
- js的遍历数组方法(JS中数组常用的循环遍历你会几种)
- dedecms栏目标签的语法(dede中当前栏目选择技巧及注意事项)
- ASP.NET URLRewriter伪静态
- sqlserver限制windows身份登录(解决sql server 数据库,sa用户被锁定的问题)
- node.js怎么使用import(Node.js断点续传的实现)
- 关闭ssl证书验证模块(开启OCSP提升https证书验证效率解决Let’s Encrypt SSL证书访问慢的问题)
- pythonselenium隐藏浏览器窗口(Python Selenium 之关闭窗口close与quit的方法)
- springbootdocker详解(Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9