修行还在继续,随着对要诀的深入,叶小凡明白,在编程世界,刚才的直接量都属于一种数据。和人有男女一样,数据也是有类型的。
在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。简单来说就是这么回事。