ECMAScript 中有 6 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String、Symbol (new in ES 6,表示独一无二的值)。还有一种复杂数据类型-Object,Object 本质上是由一组无序的名值对组成的。
除 Object 以外的所有类型都是不可变的(值本身无法被改变)。我们称这些类型的值为“原始值”。
如:JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变
typeof 操作符
对一个值使用 typeof 操作符可能返回下列某个字符串:
- “undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “string”——如果这个值是字符串;
- “number”——如果这个值是数字;
- “object”——如果这个值是对象或 null;
- “function”——如果这个值是函数;
Undefined 类型
在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined
Null 类型
从逻辑角度看,null 值表示一个空对象指针,这也正是 typeof 操作符检测 null 时返回”object”的原因
Boolean 类型
布尔表示一个逻辑实体,可以有两个值:true 和 false
Number 类型
八进制,第一位必须是 0,然后是八进制数字序列(0 ~ 7)。如果字面值中的数值超出了范围,那么前导 0 将被忽略,后面的数值将被当作十进制数值解析。八进制字面量在严格模式下是无效的
1 | var octalNum1 = 070; // 八进制的56 |
十六进制字面值的前两位必须是 0x,后跟任何十六进制数字(0 ~ 9 及 A ~ F)。其中,字母 A ~ F 可以大写,也可以小写。
1 | var hexNum1 = 0xa; // 十六进制的10 |
数值范围
由于内存的限制,ECMAScript 并不能保存世界上的所有数值,能够表示的最小数值保存在 Number.MIN_VALUE 中——在大多数浏览器中,这个值是 5e-324;能够表示的最大数值保存在 Number.MAX_VALUE 中——在大多数浏览器中,这个值是 1.7976931348623157e+308。如果某次计算的结果得到了超出 JavaScript 数值范围的值,那么这个数值会被自动转换为特殊的 Infinity(正无穷) 值(如果为负无穷大-Infinity)。
NaN
NaN,即非数值(Not a Number)是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况。
isNaN()函数,用来判断这个参数是否“不是数值”
1 | alert(isNaN(NaN)); // true |
String 类型
字符串可以由双引号(”)或单引号(’)表示
字符字面量
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 制表 |
\b | 退格 |
\r | 回车 |
\f | 进纸 |
\ | 斜杠 |
' | 单引号(’) |
" | 双引号(”) |
\xnn | 以十六进制代码 nn 表示一个字符(其中 n 为 0 ~ F)。例如:\x41 表示”A” |
\unnnn | 以十六进制代码 nnnn 表示一个 Unicode 字符(其中 n 为 0 ~ F)。例如:\u03a3 表示希腊字符 Σ |