浅谈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简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
Nov 19 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
js实现旋转木马效果
Mar 17 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
京东优选小程序的实现代码示例
Feb 25 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
兼容各大浏览器的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
PHP开发中四种查询返回结果分析
2011/01/02 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php实现异步数据调用的方法
2015/12/24 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
基于jquery的动态创建表格的插件
2011/04/05 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
Vuex 入门教程
2018/01/10 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python fabric使用笔记
2015/05/09 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
石油工程专业毕业生求职信
2014/04/13 职场文书
法人任命书范本
2014/06/04 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
业务员管理制度范本
2015/08/06 职场文书
Elasticsearch 配置详解
2022/04/19 Java/Android