javascript类型系统——undefined和null全面了解
前面的话
一般的程序语言,表示空的只有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值为undefined的7个小技巧
- JavaScript undefined及null区别实例解析
- JavaScript中的null和undefined用法解析
- javascript中undefined的本质解析
- JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
- Javascript类型系统之undefined和null浅析
- Javascript基础_简单比较undefined和null 值
- JavaScript必知必会(二) null 和undefined
- 辨析JavaScript中的Undefined类型与null类型
- JavaScript之不可靠的undefined
相关文章
javascript使用window.open提示“已经计划系统关机”的原因
这篇文章主要介绍了javascript使用window.open提示“已经计划系统关机”的原因,本文得出结论是安装了系统更新或其它原因,要把系统重启时才会提示这个问题,所以,遇到这个问题,重启你的电脑吧2014-08-08javascript向flash swf文件传递参数值注意细节
如何使用javascript向SWF文件传递参数?在网上找了一个完整的教程,很有启发性和实用性,如下是完整实现的步骤,需要的朋友可以参考下2012-12-12在JavaScript中处理字符串之fontcolor()方法的使用
这篇文章主要介绍了在JavaScript中处理字符串之fontcolor()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下2015-06-06BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的。整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益2014-10-10
最新评论