javascript类型系统——undefined和null全面了解


Posted in Javascript onJuly 13, 2016

前面的话

一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这无疑增加了程序复杂度,但这样做也是有一定原因的。本文将详细介绍javascript中的undefined和null

历史原因1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0

但是,JavaScript的设计者Brendan Eich,觉得这样做还不够,有两个原因。首先,null像在Java里一样,被当成一个对象。但是,JavaScript的值分成原始类型和对象类型两大类,Brendan Eich觉得表示”无”的值最好不是对象。其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误

因此,Brendan Eich又设计了一个undefined。他是这样区分的:null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN

但是,目前null和undefined基本是同义的,都是原始类型,且只有一些细微的差别

undefinedUndefined类型只有一个值,就是undefined。当声明的变量未初始化时,该变量的默认值是undefined。所以一般地,undefined表示变量没有初始化

var test;//undefined
console.log(test == undefined);//true
var test = undefined;//undefined

对于尚未声明过的变量只能执行一项操作,使用typeof操作符检测其数据类型,但严格模式下会导致错误

typeof(test);//undefined

【出现场景】

【1】已声明未赋值的变量

【2】获取对象不存在的属性

【3】无返回值的函数的执行结果

【4】函数的参数没有传入

【5】void(expression)

var i;
console.log(i);//undefined

var o = {};
console.log(o.p);//undefined

function f(){};
console.log(f());//undefined

function f(x){return x;}
console.log(f());//undefined

console.log(void(0));//undefined

【类型转换】

Boolean(undefined):  false
Number(undefined):  NaN
String(undefined):'undefined'

null

Null类型只有一个值,就是null。null是javascript语言的关键字,它表示一个特殊值,常用来描述"空值"

逻辑角度看,null值表示一个空对象指针

[注意]null是空对象指针,而[]是空数组,{}是空对象,三者不相同

console.log(typeof null);//'object'

尽管null和undefined是不同的,但它们都表示"值的空缺",null表示"空值",undefined表示"未定义"。两者往往可以互换。判断相等运算符==认为两者是相等的

 

console.log(null == undefined);//true

 实际上,因为undefined和null不是构造器类型,所以它们没有任何的属性和方法,使用.和[]来存取这两个值的成员或方法都会产生一个类型错误

【类型转换】

Boolean(null): false
Number(null):
 0
String(null): 
 'null'

以上这篇javascript类型系统——undefined和null全面了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery在指定DIV加载HTML示例代码
Feb 17 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
javascript检测移动设备横竖屏
May 21 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
Next.js项目实战踩坑指南(笔记)
Nov 29 Javascript
vue实现axios图片上传功能
Aug 20 Javascript
小程序双头slider选择器的实现示例
Mar 31 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 Javascript
Element Alert警告的具体使用方法
Jul 27 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 #Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 #Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 #Javascript
JQuery对ASP.NET MVC数据进行更新删除
Jul 13 #Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 #Javascript
Bootstrap登陆注册页面开发教程
Jul 12 #Javascript
深入浅析knockout源码分析之订阅
Jul 12 #Javascript
You might like
js打开windows上的可执行文件示例
2014/05/27 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
webpack4实现不同的导出类型
2019/04/09 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python下载网络小说实例代码
2018/02/03 Python
Python IDLE清空窗口的实例
2018/06/25 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
python实现IOU计算案例
2020/04/12 Python
使用django自带的user做外键的方法
2020/11/30 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
机械专业毕业生自荐信
2013/11/02 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
中国好声音华少广告词
2014/03/17 职场文书
合作意向书
2014/07/30 职场文书
春季运动会加油词
2015/07/18 职场文书