浅谈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效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 Javascript
谈谈target=_new和_blank的不同之处
Oct 25 Javascript
理解JavaScript原型链
Oct 25 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
深入理解vue $refs的基本用法
Jul 13 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 Javascript
详解Vue串联过滤器的使用场景
Apr 30 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实现的QQ空间g_tk加密算法
2015/07/09 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
Vue组件中slot的用法
2018/01/30 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
python获取url的返回信息方法
2018/12/17 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
django模板结构优化的方法
2019/02/28 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
英语道歉信范文
2014/01/09 职场文书
管理失职检讨书
2014/02/12 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
院系推荐意见
2015/06/05 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
初三语文教学反思
2016/03/03 职场文书