浅谈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 相关文章推荐
extjs之去除s.gif的影响
Dec 25 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
Apr 15 Javascript
vue实现简易的双向数据绑定
Dec 29 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
兼容各大浏览器的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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
PHP实现简单的计算器
2020/08/28 PHP
jquery中获取元素的几种方式小结
2011/07/05 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python下MySQLdb用法实例分析
2015/06/08 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
自我评价中英文语句
2013/11/30 职场文书
工作决心书范文
2014/03/11 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
个人工作年终总结
2015/03/09 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
Java异常处理try catch的基本用法
2021/12/06 Java/Android