ECMAScript数据类型
5种简单数据类型(也称为基本数据类型)Undefined、Null、Boolean、Number、String,还有一种负责类型Object
typeof操作符
- “undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “number”——如果这个值是数值;
- “string”——如果这个值是字符串;
- “null”——如果这个值是对象或者null;
- “function”——如果这个值是函数;
typeof操作符的操作数,可以是变量也可以是数值字面量
1 | alert(typeof message); |
Undefined类型
1 | var message; |
Null类型
1 | var car = null; |
如果定义的变量准备在将来用户保存对象,那么最好将改变量初始化null而不是其他值,这样一来,只要直接检测null值就知道改变量是否保存了一个对象的引用。
Boolean类型
各种数据类型也Boolean的转换规则,如下表格
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | “”(空字符串) |
Number | 任何非零数字(包括无穷大) | 0和nan |
Object | 任何对象 | null |
Undefined | n/a | undefined |
Number类型
- 整数
八进制,第一位必须是0,然后是八进制数字序列(0~7),如果字面中的数据超出了范围,那么前导0将被忽略,后面的数字被当做十进制解析
1 | alert(070); // 八进制的56 |
十六进制,前面两位必须是0x,后跟(09或AF),其中字母A~F可大写也可小写
1 | var hexNum1 = 0xA; // 十六进制10 |
在进行算数计算时,所有八进制和十六进制都会被转换为十进制数值。
- 浮点数
1 | var floatNum = 3.125e7; // 31250000(3.125*10^7); |
永远不要测试某个特定的浮点数值。
范围:
Number.MIN_VALUE:5e-324
Number.MAX_VALUE:1.7976931348623157e+308
- NaN
(Not a Number),有两个非同寻常的特点:
- 任何涉及NaN的操作都会返回NaN(NaN/0)
- NaN与任何值都不相等,包括NaN
1 | alert(isNaN(NaN)); //true |
- 数值转换
Number()、parseInt()、parseFloat()
Number()可用于任何数据类型
1 | var num1 = Number("Hello world!"); //NaN |
parseInt()、parseFloat()只能把字符串转换为数值
1 | var num1 = parseInt("1234blue"); // 1234 |
无论在什么情况下,都明确指定基数
parseFloat()只解析十进制,因此没有第二个基数
1 | var num1 = parseFloat("1234blue"); //1234 |
String类型
- 字符字面量
特殊的字符字面量,也叫转义序列
1 | var text = "This is the letter sigma: \u03a3."; |
有28个字符,其中6个字符长的转义序列\u03a3
表示一个字符
- 字符串特点
字符串是不可变的 - 字符串转换
toString(),null和undefined无此方法。多数情况不传参数,但在调用数值的toString()时,可以传表示进制的参数
1 | var num = 10; |
在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String()
1 | var value1 = 10; |
Object对象
一组数据和功能的结合