要了解一门语言,首先要了解它的数据类型有哪些?他们之间有什么关系?能否互相转换等。
目前,JavaScript(下称JS)中有七大数据类型,它们分别是:
1. Boolean 布尔型
2. Null 空
3. Undefined 未定义
4. Number 数字型
5. String 字符串型
6. Symbol 符号型
7. Ojbect 对象
记得在“JS学习篇(一) JavaScript语言特性”中有提到过,JS是一门动态脚本语言,这主要体现在JS的变量可以是变化的,而不是固定的:
var foo = 42; // foo是一个Number
foo = "bar"; // 现在foo是一个String
foo = true; // 现在foo是一个Boolean
下面将展开各类型的介绍:
布尔型Boolean
布尔类型只有两个值:true和false,它们分别代表逻辑上的真与假,真代表true,假代表false,它们通常用在逻辑语句的判断上。
空Null
Null类型只有一个值:null ,它代表变量值为空(注意与下面的未定义Undefined区分),通常表示变量未指向任何值或者对象。在API调用过程中,
null常在返回类型是对象,但没关联值的地方使用。
未定义Undefined
Undefined类型只有一个值:undefined,未被初始化的变量都有默认值undefined,undefined既是一个类型也是一个值,undefined值是undefined类型的唯一值。
undefined与null有区别,首先在概念上已经划分了这是两种类型,那么undefined强调的是变量未初始化,而null则代表变量有值,只是这是一个空值。在JS解释器中执行下面代码:
// foo不存在,它从来没有被定义过或者是初始化过:
foo;
"ReferenceError: foo is not defined"
// foo现在已经是知存在的,但是它没有类型或者是值:
var foo = null;
foo;
null
可以看到一开始就运行"foo;'"去访问foo的值得到错误提示“ReferenceError: foo is not defined”,代表foo未定义;而后面通过“var foo = null;”定义了foo并赋值,此刻foo是有值的,这个值就是null(代表空值)。
另外,null是一个字面量(就是一个值表示),它类似于“hello”或者42这样一个字符串或者数字字面量,只是它代表是一个空(什么都没)的值。而undefined是JS环境中全局对象的一个属性,也就是说它是一个全局变量,里面存着一个undefined的值。
上面说的比较复杂拗口,可能用实际代码来演示比较直接,这里用==和===操作符来演示,可以在JS解释器中执行以下代码以查看结果:
typeof null // "object" (因为一些以前的原因而不是'null')
typeof undefined // "undefined"
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
可以看到其中一条比较特别的“null =&#