一、基本概念(接上篇)
4. 数据类型
5种简单数据类型(基本数据类型):
Undefined、Null、Boolean、Number、String
1种复杂数据类型:
Object
所有值最终都是6种数据类型之一。
1. typeof
字符串 – ‘string’
数值 – ‘number’
布尔值 – ‘boolean’
值未定义 – ‘undefined’
对象或null – ‘object’
函数 – ‘function’
2. Undefined类型
只有一个值:undefined (声明变量未初始化)
注意:对未初始化的变量执行typeof,返回undefined;
对未声明的变量执行typeof,也返回undefined。
3. Null类型
只有一个值:null(空对象指针)
注意:定义的变量将要用来保存对象,最好初始化为null。
undefined派生自null,null == undefined 返回 true。
4. Bollean类型
两个值:true和false
其他类型转化为布尔值:
大部分转化为true,转化为false的有:
“”、0、NaN、false、undefined、null
5. Number类型
(1)字面量格式:
十进制、八进制 0(0-7)、十六进制 0x(0-9A-F可小写)
(2)浮点数值的计算会有误差:
例如 0.1 + 0.2 = 0.30000000000000004
(3)数值范围:
最小值:Number.MIN_VALUE(5e-324)
最大值:Number.MAX_VALUE(1.7976931348623157e+308)
如果计算结果超出数值范围,会被转化为Infinity值:
正无穷:Infinity(Number.POSITIVE_INFINITY)
负无穷:-Infinity(Number.NEGATIVE_INFINITY)
Infinity不能参与计算,判断是否处于数值范围,使用 isFinite() 判断。
(4)NaN
特殊的数值:NaN
特点:任何涉及NaN的操作都会返回NaN;NaN不等于任何值,包括NaN本身
判断不是数值 isNaN() ,会先尝试转换为数值,如‘10’
isNaN判断对象时, 会先调用对象的valueOf()方法,不能转换为数值,再调用toString()方法,测试返回值。
(5)数值转换
3个函数:Number()、parseInt()、parseFloat()
Number() 可用于任何数据类型,后两个专门把字符串转换成数值。
Number()转换规则:
- true --> 1 false --> 0
- 数字值 --> 简单的传入和返回
- null --> 0
- undefined --> NaN
- 字符串
-
- 只包含数字,如‘1’ --> 十进制数值
-
- 包含有效的浮点格式,如‘1.1’ --> 对应的浮点数值
-
- 包含有效的十六进制格式,如‘0xf’ --> 相同大小的十进制整数值
-
- 空字符串 --> 0
-
- 包含除上述格式之外的字符 --> NaN
- 对象 --> 先调用valueOf()方法,结果NaN的话,再调用toString()方法,按照前面的规则转换返回的字符串。
ParseInt()转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符;如果第一个字符不是数字字符,返回NaN;如果第一个字符是数字字符,继续解析,直到遇到非数字字符。
例如:‘’ 返回 NaN,‘1234abc’ 返回 1234,‘22.5’ 返回 22。
也可以识别八进制和十六进制数。
解析八进制字符串时,ECMAScript3和5有分歧,如parseInt(‘070’),ECMAScript3返回56(八进制),ECMAScript5返回70(十进制)
可以提供第2个参数:转换时使用的基数(即多少进制)
parseInt(‘0xAF’, 16) --> 175
parseInt(‘AF’, 16) --> 175 // 指定了第2个参数,可以不带0x
parseInt(‘AF’) --> NaN
ParseFloat()和ParseInt()类似,从第一个字符开始解析,直到遇到无效的浮点数字字符。
第一个小数点有效,后面的小数点无效,如 ‘22.33.44’返回‘22.33’
区别:
1)第一个小数点有效直接洗十进制
2)始终忽略前导的零,只解析十进制,没有第二个参数指定基数
注意:字符串是一个可解析为整数的数(没有小数点,或者小数点后面都是0),返回整数。
6. String类型
可以单引号或者双引号,完全相同
(1)字符字面量
特殊的字符字面量:转义字符
(2)字符串特点:
字符串不可变,一旦创建,值不能改变,要改变,先销毁原来的,再用另一个字符串填充改变的变量。
(3)转换为字符串
- toString()
几乎每个值都有这个方法,null和undefined没有该方法。
大多数调用不用传递参数,可以传递一个参数:输出数值的基数
例如 10.toString(8) --> 12 - String()
转换规则:有toString方法调用该方法,null返回‘null’,undefined返回‘undefined’。 - 和字符串加在一起
7. Object类型
Object每个实例都有以下属性方法:
constructor:构造函数,保存着用于创建当前对象的函数
hasOwnProperty(‘name’):检查传入的属性是否在当前对象实例中(不是原型)
isPrototypeOf(object):检查传入的对象是否是当前对象的原型
propertyIsEnumerable(‘name’):检查传入的属性是否能用for-in语句枚举
toLocalString():返回对象的字符串表示,与执行环境的地区对应
toString():返回对象的字符串表示
valueOf():返回对象的字符串、数值或布尔值表示,通常与toString返回值相同
注意:浏览器环境中的对象,如DOM和BOM中的对象,属于宿主对象,可能会也可能不会继承Object。
上一篇:2-JavaScript高级程序设计-基本概念
下一篇:4-JavaScript高级应用设计-操作符