浅谈JavaScript中null和undefined


Posted in Javascript onJuly 09, 2015

先说null,它表示一个特殊值,常用来描述“空值”。对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”(感觉怪怪的)。实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。

JavaScript还有第二个值来表示值的空缺,就是undefined啦,用未定义的值表示更深层次的“空值”。undefined出现有4种情况:①变量声明但没有初始化时②要查询的对象属性或数组的元素不存在时③如果函数没有任何返回值,则返回undefined④引用没有提供实参的函数形参的值也只会得到undefined。

两者相同点:①正如前面所说,它们都是“假值”,也就是说JavaScript期望使用一个布尔值时,它们都会被转换成false;②它们两个都不包含任何属性和方法。

两者不同点:①null是JavaScript语言的关键字,而undefined是JavaScript预定义的全局变量,不是关键字。并且,在ECMAScript 3中,undefined是可读、可写的变量,可以给它赋任何值,这个错误在ECMAScript 5中做了修正,在该版本中undefined是只读的(看到网上说现在的浏览器基本上都是支持ECMAScript 5了,不知道为什么我在浏览器中给undefined赋值没有报错,只是并没有改变它的值);②执行typeof运算,null返回“object”字符串,undefined返回“undefined”字符串。

至于把null和undefined做比较,null == undefined 返回true,null === undefined 返回false。可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。如果想把它们赋值给变量或属性或者当做参数传入函数,最好选择使用null。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
用js遍历 table的脚本
Jul 23 Javascript
Javascript String对象扩展HTML编码和解码的方法
Jun 02 Javascript
javascript 简练的几个函数
Aug 29 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
js动态生成表格(节点操作)
Jan 12 Javascript
vue postcss-px2rem 自适应布局
May 15 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 #Javascript
JavaScript包装对象使用详解
Jul 09 #Javascript
jquery实现表单验证并阻止非法提交
Jul 09 #Javascript
jQuery实现tab选项卡效果的方法
Jul 08 #Javascript
jQuery实现类似淘宝网图片放大效果的方法
Jul 08 #Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 #Javascript
详细分析JavaScript变量类型
Jul 08 #Javascript
You might like
用文本文件制作留言板提示(下)
2006/10/09 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
python实现小球弹跳效果
2019/05/10 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
大学生自我鉴定范文
2013/12/28 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
英文慰问信范文
2015/03/24 职场文书
2015年话务员工作总结
2015/04/29 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
升职自荐书
2019/05/09 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
Python读写yaml文件
2022/03/20 Python