1.4 数据类型
修行还在继续,随着对要诀理解的深入,叶小凡明白,在编程世界中,刚才的直接量都属于一种数据,如同人有男女之分一样,数据也是有类型的。在JavaScript中,数据可分为两类,分别为原生数据类型(primitive type)和对象数据类型(object type)。
叶小凡心念一动,数字“6”立刻浮现在他体内的内存元海中,同时,为了不让数字消失,他还专门定义了一个变量指向这个数字。
var num = 6;
叶小凡心中已有明悟,这个数字和字符串都属于原生数据类型。那么,还有其他原生数据类型吗?随着心念扫过要诀,一炷香的时间后,叶小凡已经若有所悟。原来,原生数据类型包括数字、字符串、布尔值,还有两个特殊的类型:null和undefined。
“布尔值,”叶小凡口中喃喃,“它是一种只有true和false两种状态的类型。”嗯,就好像以前自己在村子里点蜡烛,要么蜡烛亮起来,要么蜡烛熄灭,只有这两种状态。至于null和undefined,叶小凡略一皱眉,结合秘籍,开始了感悟。
一炷香的时间过去了,叶小凡猛地睁眼,呼吸都有点急促。
“我明白了!从用法上来看,null和undefined都代表了直接量的空缺,如果一个变量指向了其中任何一个,都代表false的含义,也表示没有或空的概念。而从根本意义上讲,undefined要比null更加严重一点,代表本不应该出现的错误,比如我刚才定义了一个变量a,但是我没有把任何直接量赋给它,那么a就默认指向了undefined;而null不同,有的时候,我需要给某些变量赋值null,以达到清空的目的。”
拓展阅读
JavaScript包括直接量和变量。首先说直接量,什么是直接量呢?在JavaScript的世界里,直接量包含数值(如10/20)、逻辑值(true/false)、字符串(如“nihao”)、null、undefined、对象和函数。其中,函数也称方法,对象和函数会在之后的章节中慢慢介绍。你暂时可以认为对象是存放数据的一个容器,而函数是应用程序处理某一系列逻辑的一个过程设计。
null是一个特殊的关键字,表示没有值;null也是一个原始值,因为JavaScript是大小写敏感的,所以null和Null、NULL或者其他变量是有区别的。
undefined是一个顶级属性,它代表某一个变量未定义。同样,undefined也是一个原始值。
说完直接量,再来说变量。所谓变量,就是指向了某个直接量或者其他变量的“钥匙”。比方说,把一个直接量true比作一扇门,然后定义一个变量flag,最后通过赋值运算符“=”将这个true赋值给flag,这样就完成了一个变量的绑定。
从此以后,你在别处使用变量flag,也就相当于使用了直接量true。简单来说,就是这么回事。