浅谈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 动态改变图片大小
Jun 11 Javascript
js遍历td tr等html元素
Dec 13 Javascript
JS防止用户多次提交的简单代码
Aug 01 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
省市选择的简单实现(基于zepto.js)
Jun 21 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
Sep 25 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
搭建vscode+vue环境的详细教程
Aug 31 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
收音机指标测试方法及仪器
2021/03/01 无线电
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
Javascript实现单例模式
2016/01/24 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
神经网络python源码分享
2017/12/15 Python
解析Python的缩进规则的使用
2019/01/16 Python
python assert的用处示例详解
2019/04/01 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
python 如何停止一个死循环的线程
2020/11/24 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
业务员薪酬管理制度
2014/01/15 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
求职自我评价范文
2015/03/09 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python