浅谈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 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
关于原生js中bind函数的简单实现
Aug 10 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
Dec 14 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
谈谈对vue响应式数据更新的误解
Aug 01 Javascript
vue.js中created方法作用
Mar 30 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
Apr 17 Javascript
vue中的计算属性和侦听属性
Nov 06 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依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
JavaScript替换当前页面的方法
2015/04/03 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
ET Mall东森购物网:东森严选
2017/03/06 全球购物
新闻专业学生的自我评价
2014/02/13 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
团结友爱主题班会
2015/08/13 职场文书
周末问候语大全
2015/11/10 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android