浅谈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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
IE 缓存策略的BUG的解决方法
Jul 21 Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
Dec 03 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
微信小程序 slot踩坑的解决
Apr 01 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
基于mysql的bbs设计(五)
2006/10/09 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
对Python中画图时候的线类型详解
2019/07/07 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
pycharm显示远程图片的实现
2019/11/04 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
商务主管岗位职责
2013/12/08 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
校友回访母校寄语
2015/02/26 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript