目录
数据类型
ECMAScript有5种简单数据类型(基本数据类型)——Undefined,Null,Boolean,Number,String和一种复杂数据类型——Object。
1.typeof操作符
用于检测给定变量的数据类型。可能取值为:
“undefined”--值未定义
“boolean”--值为布尔值
“string”--值为字符串
“number”--值位数字
“object”--值为对象或null
“function”--值为函数
2.Undefined类型
只有一个值,即特殊的undefined值。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
3.Null类型
- 只有一个值,即特殊的null。null值表示一个空对象指针,因此使用typeof操作符检测null值会返回“object”。
- undefined值实际上是拍生子null值的。
4.Boolean值
该类型只有两个字面值:true和false。
要将一个只转换成其对应的Boolean值,可以调用转换函数Boolean()。
转换规则如下:
数据类型 | 转换为true值 | 转换为false值 |
Boolean | true | false |
String | 非空字符串 | “”(空字符串) |
Number | 任何非0数字值(包括无穷大) | 0或NaN |
Object | 任何对象 | null |
Undefined | 无 | undefined |
5.Number类型
整数可以通过八进制(字面量第一位必须是0,在严格模式下是无效的)、十进制和十六进制(字面量前两位必须是0x)表示。在进行算术运算时,八进制和十六进制都将被转换为十进制。
5.1 浮点数值
保存浮点数值的内存空间是整保存数值的两倍,浮点数值的最高精度是17位小数。
5.2 数值范围
ECMAScript中的最大值保存在Number.MAX_VALUE中,最小值保存在Number.MIN_VALUE中,无穷大表示为Infinity。
5.3 NaN
即非数值,用于表示一个本来要返回数值的操作数未返回数值的情况。
NaN本身有两个非同寻常的特点:
- 任何涉及NaN的操作都会返回NaN
- NaN与任何值不相等,包括其本身
针对以上两个特点,有isNaN()函数,这个函数接收一个参数,可以是任何类型。该函数判断参数是否“不是数值”。
5.4 数值转换
有3个函数可以把非数值转换成数值:Number(),parseInt(),parseFloat()。
1.Number()转换规则
- 若传入的是Boolean值,true和false分别转换为1和0
- 若传入的是数字值,则简单的返回
- 若传入的是null值,则返回0
- 若传入的是undefined,则返回NaN
- 若传入的是字符串,则
1) 如果字符串只包含数字,则将其转换为十进制数值(忽略前导0)
2)如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值
3)如果字符串中包含有效的十六进制格式,将其转换成相同大小的十进制整数数值
4)如果字符串是空的,则将其转换成0
5)字符串中包括除以上格式之外的字符串,则转换成NaN - 若传入的是对象,则调用对象的valueOf()方法,然后按照前面的规则转换,若转换结果为NaN,则调用对象的toString()方法,再一站前面的规则进行转换。
2.parseInt()转换规则
主要看其是否符合数值模式。在进行数值转换时,会忽略字符串前面的空格,直到找到第一个非空字符。若果第一个非空字符不是数字字符或者负号的话,则返回NaN(也就是说parseInt()转换空字符串会返回NaN)。若第一个字符是数字字符,则继续解析第二个字符,知道解析完所有后续字符或者遇到了一个非数字字符。
parseInt()可以识别出各种整数格式。可以传入第二个参数:转换时使用的基数(即多少进制)
var num1 = parseInt('0xAF',16); //175
var num2 = parseInt('AF',16); //175
var num3 = parseInt('AF'); //NaN
3.parseFloat()转换规则
从第一个字符开始解析,一直解析到字符串结尾或者解析到遇见一个无效的浮点数字字符为止。字符串中的第一个小数点是有效的,第二个小数点是无效的。除此之外,parseFloat始终忽略前导0。
6. String类型
1)任何字符串的长度都可以通过访问length属性获得
2)转换成字符串有两种方法:
- toString()
数值,布尔值,对象和字符串值都有toString()方法,但null和undefined没有
在调用数值的toString()方法时,可以传入一个参数:输出数值的基数。 - String()
在不知道要转换的值是不是null或者undefined时,还可以使用转型函数String(),遵循以下规则:
如果有toString()方法,则调用该方法并返回响应的结果;
如果值是null,则返回“null”
如果值是undefined,则返回“undefined”
7. Object类型
ECMAScript中的对象就是一组数据和功能的集合。
对象可以通过执行new操作符后跟要创建的对象类型的名称来创建,例:
var o = new Object();
Object类型是所有他的实例的基础,即Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。Object的每个实例都具有以下属性和方法:
- constructor:保存着用于创建当前对象的函数
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在
- isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举
- toLocalString():返回对象的字符串表示,该字符串与执行环境的地区对应
- toString():返回对象的字符串表示
- valueOf():返回对象的字符串,数字或布尔值表示,通常与toString()方法的返回值相同