浅谈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 相关文章推荐
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
JS小功能(列表页面隔行变色)简单实现
Nov 28 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
Dec 08 Javascript
bootstrap选项卡使用方法解析
Jan 11 Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 Javascript
如何在Express4.x中愉快地使用async的方法
Nov 18 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 cookie的操作实现代码(登录)
2010/12/29 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
基于python的七种经典排序算法(推荐)
2016/12/08 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python实现飞行棋游戏
2020/02/05 Python
Python如何实现线程间通信
2020/07/30 Python
flask项目集成swagger的方法
2020/12/09 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
社区文化建设方案
2014/05/02 职场文书
学生检讨书范文
2014/10/30 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
政工师工作总结2015
2015/05/26 职场文书
红歌会主持词
2015/07/02 职场文书
创业计划书之网吧
2019/10/10 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
Python IO文件管理的具体使用
2022/03/20 Python