1. js一共6种数据类型:
- 5中基本数据类型(也叫做简单数据类型)
Undefined Null Boolean Number String
- 1种复杂数据类型
Object
2. typeof操作符检测结果
- “undefined” // 这个值未定义,声明了没有给值
- “boolean” // 这个值是布尔值
- “string” // 这个值是字符串
- “number” // 这个值是数值
- “object” // 这个值是对象或null
- “function” // 这个值是函数
3. Null类型
Null类型是第二个只有一个值的数据类型(另一个是Undefined),这个特殊的值是null。
null的使用
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其它值。这样一来,只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用,如下面的例子所示:
if(car != null){
// 对car 对象执行某些操作
}
复制代码
typeof检测null值时会返回”object”
从逻辑上讲,null值表述一个空对象指针,而这正是使用typeof检测null值时会返回”object”的原因
undefined == null 为true
实际上,undefined值派生自null值,因此ECMA-262规定测试它们的相等性测试要返回true
4. Boolean类型
- 该类型只有两个字面值:true 和 false
– 数据类型对应转换规则表
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | “” (空字符串,注意,如果字符串有空格也不是空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | undefined |
5. Number类型
进制的表示
– 10进制,
最基本的数值字面量格式,可以直接在代码输入
var intNum = 55
– 8进制:
八进制的字面值第一位必须是0,后面是8进制序列(0-7)
在严格模式下无效,支持严格模式的JavaScript引擎会抛出错误
var octalNum1 = 070 // 八进制的56
var octalNum2 = 079 // 无效的八进制值,接续为 79
var octalNum3 = 08 // 无效的八进制,解析为8
复制代码
– 16进制
十六进制的前两位是0x,后面是16进制序列(0-9及A-F),字母A-F也可以小写
var hexNum1 = 0xA // 16进制的10
var hexNum2 = 0x1f // 16进制的31
复制代码
在进行算术运算时,所有的8进制以及16进制表示的数值最终都会被转成16进制数值
NaN
Not a Number 是一个特殊的数值,这个数值便是一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)
NaN的特点:
- 任何涉及NaN的操作(例如NaN/10)都会返回NaN。
- NaN和任何值都不相等,包括NaN本身
isNaN()函数
- isNaN()在接收一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串”10″或Boolean值
- 任何不能被转为数值的值都会导致这个函数返回true
数值转换
- 有三个函数可以将非数值转换为数值:
- Number()
- parseInt()
- parseFolat()
Number()可以用于任何数据类型
parseInt()、parseFlost() 专门用于把字符串转换成数值
2. Number() 函数转换规则如下
-
如果是Boolean值,true和false将分别转换为1和0
-
如果是数字值,只是简单的传入和返回
-
如果是null值,返回0
-
如果是undefined值,返回NaN
-
如果是字符串,遵循下列规则
1. 如果字符串中只包含数字(包括前面带正负号的情况),则将其转换为10进制值,"011"会变成11(注意,前导0被忽略了) 复制代码
2. 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导0)
3. 如果字符串中包含有效的16进制格式,例如"0xf",则将其转换为相同大小的10进制整数值
复制代码
4、如果字符串是空的(不包含任何字符或者空格字符也是可以的),则将其转换为0
复制代码
5. 如果字符串中包含除上述格式之外的字符,将其转换为NaN
复制代码
6. 如果是对象,则调用对象的valueOf()方法,然后按照前面的规则转换返回的值。如皋转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值
复制代码
未完待续—
摘自:
《Javascript 高级程序设计 (第三版)》
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END