浅谈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 相关文章推荐
可输入的下拉框
Jun 19 Javascript
jQuery 技巧大全(新手入门篇)
May 12 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
JS通过ajax动态读取xml文件内容的方法
Mar 24 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
Vue表单及表单绑定方法
Sep 04 Javascript
javascript判断一个变量是数组还是对象
Apr 10 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
JavaScript封装单向链表的示例代码
Sep 17 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 数据结构 算法 三元组 Triplet
2011/07/02 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
python3调用R的示例代码
2018/02/23 Python
pandas 将索引值相加的方法
2018/11/15 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Python tcp传输代码实例解析
2020/03/18 Python
python开发前景如何
2020/06/11 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
python自动生成sql语句的脚本
2021/02/24 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
社区庆中秋节活动方案
2014/02/07 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
技术负责人任命书
2014/06/05 职场文书
工作求职自荐信
2014/06/13 职场文书
个人专业技术总结
2015/03/05 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript
Redis实现分布式锁的五种方法详解
2022/06/14 Redis