浅谈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 26 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
Nov 22 Javascript
jquery实现提示语淡入效果
May 05 jQuery
在小程序中使用Echart图表的示例代码
Aug 02 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
详解datagrid使用方法(重要)
Nov 06 Javascript
微信小程序canvas实现签名功能
Jan 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中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
js表头排序实现方法
2015/01/16 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
python如何定义带参数的装饰器
2018/03/20 Python
python——全排列数的生成方式
2020/02/26 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
初中三好学生事迹材料
2014/01/13 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
岗位职责说明书
2014/05/07 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
初中教师个人总结
2015/02/10 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL