最新的 JavaScript 标准定义了 6 种基本数据类型(截止至 ECMAScript 6.0),它们分别是:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol
Boolean
该类型只有两个字面值:true
和 false
。
在 JavaScript 中所有类型的值都可以通过 Boolean()
方法或两次取反操作 !!
转换为 Boolean 值。例如:
var str = 'string';
var b1 = Boolean(str); // true
var b2 = !!str; // true
下表给出了各种基本数据类型及其对象的转换规则。
数据类型 | 转换为 true 的值 |
转换为 false 的值 |
---|---|---|
Boolean | true | false |
String | 任意非空字符串 | ""(空字符串) |
Number | 任意非 0 数值(包括无穷大) | 0 和 NAN |
Object | 任意对象 | null |
Undefined | N/A | undefined |
Symbol | 任意值 | N/A |
Null
该类型是只有一个值的数据类型,这个特殊的值是 null
,它表示一个空对象指针,而这也正是使用 typeof
操作符检测 null
时会返回 'object'
的原因。
Undefined
该类型是只有一个值的数据类型,这个特殊的值是 undefined
。在使用 var
或 let
声明变量但未对其加以初始化时,这个变量的值就是 undefined
。实际上,在代码中的 undefined
不是字面量,而是 window
对象的一个成员变量,因此它也可以作为一个合法的标识符。例如:
var undefined = 0;
因此,undefined
变量有被复写的可能。可以使用 void
操作符将任意表达式转换得到 undefined
值,如 void 0
。
Number
该类型用来表示整数和浮点数值,还有一种特殊的数值,即 NaN
(Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,非数值类型除以 0 都会抛出错误,从而停止代码执行。但在 JavaScript 中,非数值类型除以 0 会返回 NaN,因此不会影响其他代码的执行。
NaN
本身有两个非同寻常的特点。首先,任何涉及 NaN
的操作(例如 NaN / 10
)都会返回 NaN
,这个特点在多步计算中有可能导致问题。其次,NaN
与任何值都不相等,包括 NaN
本身。
String
该类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串字面量可以由单引号(')或双引号(")表示。例如:
var str1 = 'string';
var str2 = "string";
字符串是不可变,所有会修改字符串的操作都会创建一个新的字符串。
Symbol
该类型是 ECMAScript 6.0 新增的基本数据类型。通过 Symbol()
方法可以创建一个新的 Symbol
值,并且创建出来的每一个值都是唯一的。Symbol()
方法允许传入一个描述性的字符串,以用于调试。创建方法如下:
var symbol1 = Symbol();
var symbol2 = Symbol('description')
网友评论