浅谈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 相关文章推荐
javascript 日期常用的方法
Nov 11 Javascript
javascript学习笔记(三)BOM和DOM详解
Sep 30 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
jQuery的end()方法使用详解
Jul 15 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
jQuery ajax应用总结
Jun 02 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
JavaScript之解构赋值的理解
Jan 30 Javascript
在vue中高德地图引入和轨迹的绘制的实现
Oct 11 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 Javascript
js实现百度登录窗口拖拽效果
Mar 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.ini 配置文件的深入解析
2013/06/17 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP文件上传类实例详解
2016/04/08 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python递归函数定义与用法示例
2017/06/02 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
精伦电子Java笔试题
2013/01/16 面试题
医院护士的求职信
2014/01/03 职场文书
教师求职信
2014/06/17 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
通知函格式范文
2015/04/27 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书