ECMAScript中有5中简单的数据类型:Null,Undefined,Boolean,Number,String
还有一种复杂数据类型:Object。Object本质上是一组无序的名值对组成的。*ECMAscript不支持任何创建自定义类型的机制。也就是说:所有的数据类型最终都是上述的6中数据类型之一。*
数据类型
typeof操作符
typeof是用来检测数据属于哪种数据类型的操作符。其结果有6种可能的结果:
1. undefined
2. boolean
3. string
4. object
5. number
6. function
注意
typeof操作符的操作数可以是变量也可以是数值字面量。有的时候,操作符会返回一些令人疑惑但技术上正确的值。比如typeof null会返回object。因为特殊值null被认为是一个空的对象引用。
严格来说,function在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象时有必要的。
Undefined类型
Undefined类型只有一个值,即特殊值undefined。在使用var声明变量但未对变量加以初始化时,这个变量的值就是undefined。对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型。
Null类型
- Null类型是第二个只有一个值的数据类型,这个类型的值是null。从逻辑上讲,null值表示一个空指针。而这也是为什么使用typeof操作符检测null值时返回object的原因。
- 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始值初始化为null而不是其他值。
- 实际上,undefined值是派生自null值。alert(null == undefined) // true
Boolean类型
Boolean类型只有2个字面值,true和false。
可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean类型的值。转换规则如下:
这些转换规则对于理解流控制语句(if语句)自动执行相应的Boolean转换非常重要。
Number类型
最基本的数值字面量是十进制整数。除此之外还可通过8进制好16进制的字面量来表示。
var num1 = 070;//八进制56
var num2 = 079;//无效的八进制数,会被解析为十进制的79
var num3 = 08;//无效的八进制数,会被解析为十进制的8;
八进制字面量在严格模式下是无效的,会导致支持该模式的JavaScript引擎抛出错误。