文章目录
类型转换
类型转换分 显示类型转换 和 隐式类型转换,这里主要讨论 显示类型转换。
1、转换为 Boolean
数据类型 | 转换为 true 的值 | 转换为 false 的值 |
---|---|---|
Undefined | / | undefined |
Null | / | null |
Number | 非零数值(包括无穷值) | 0 、NaN |
String | 非空字符串 | “” (空字符串) |
Object | 所有对象(不包含 null ) | / |
这种最简单了,按照我们的思维,几乎没什么特殊的。
2、转换为 String
2.1 方式一: toString()
-
调用被转换数据的
toString()
方法 -
例子:
var a = 123; a = a.toString();
-
注意:
-
这个方法不适用于
null
和undefined
由于这两个类型的数据中没有方法,所以调用
toString()
时会报错 -
对于普通对象,会返回字符串
'[object Object]'
-
对于数组,会遍历每个数组元素取调用
toString()
,最后拼接起来
-
2.2 方式二: String()
-
调用
String()
函数 -
例子:
var a = 123; a = String(a);
-
原理:对于
Number Boolean String
都会调用他们的toString()
方法来将其转换为字符串, -
注意:
- 对于
null
值,直接转换为字符串"null"
。对于undefined
直接转换为字符串"undefined"
- 对于普通对象,会返回字符串
'[object Object]'
- 对于数组,会遍历每个数组元素取调用
toString()
,最后拼接起来
- 对于
小结:
toString
和String
很类似
区别在于String
可以转换null
和undefined
这两个函数,对普通对象,返回字符串'[object Object]'
对数组,会遍历返回拼接
3、转换为 Number
Number()
是转型函数,可用于任何数据类型。另外两个函数主要用于将字符串转换为数值。
3.1 Number()
Undefined
: 返回NaN
Null
: 返回 0Boolean
:true
转换为1,false
转换为0Number
: 直接返回String
:- 如果字符串包含数值字符,包括数值字符前面带加、减 号的情况,则转换为一个十进制数值。因此,
Number("1")
返回1,Number("123")
返回123,Number("011")
返回11(忽略前面的零)。 - 如果字符串包含有效的浮点值格式如 “1.1” ,则会转 换为相应的浮点值(同样,忽略前面的零)。
- 如果字符串包含有效的十六进制格式如 “0xf” ,则会 转换为与该十六进制值对应的十进制整数值。
- 如果是空字符串(不包含字符),则返回0。 如果字符串包含除上述情况之外的其他字符,则返回
NaN
。
- 如果字符串包含数值字符,包括数值字符前面带加、减 号的情况,则转换为一个十进制数值。因此,
Object
: 先把对象转化为字符串,再转化为数字。
转换为
Number
最是难料
undefined
转NaN
,Null
转 0字符串和对象更难搞
空字符串转0,有字母就
NaN
对象要转字符串后再转
一个字,麻烦
3.2 parseInt()/parseFloat()
这两个函数专门用来将一个字符串转换为数字的
parseInt()
-
可以将一个字符串中的有效的整数位提取出来,并转换为
Number
-
例子:
var a = "123.456px"; a = parseInt(a); //123
-
如果需要可以在
parseInt()
中指定一个第二个参数,来指定进制
parseFloat()
-
可以将一个字符串中的有效的小数位提取出来,并转换为
Number
-
例子:
var a = "123.456px"; a = parseFloat(a); //123.456
相等运算符
==
-
相等,判断左右两个值是否相等,如果相等返回
true
,如果不等返回false
-
相等会自动对两个值进行类型转换,如果对不同的类型进行比较,会将其转换为相同的类型然后再比较,转换后相等它也会返回
true
-
转换类型规则:
- 如果任一操作数是布尔值,则将其转换为数值再比较是否相等。
false
转换为0,true
转换为1。 - 如果一个操作数是字符串,另一个操作数是数值,则尝试将 字符串转换为数值,再比较是否相等。
- 如果一个操作数是对象,另一个操作数不是,则调用对象的
valueOf()
方法取得其原始值,再根据前面的规则进行比较。
- 如果任一操作数是布尔值,则将其转换为数值再比较是否相等。
-
特殊规则:
-
null
和undefined
- 由于
undefined
衍生自null
,所以null == undefined
会返回true
。但是null === undefined
会返回false
- 由于
-
NaN
NaN
不与任何值相等,包括它自身NaN == NaN //false
判断一个值是否是
NaN
: 使用isNaN()
函数 -
!=
- 不等,判断左右两个值是否不等,如果不等则返回
true
,如果相等则返回false
- 不等也会做自动的类型转换。
===
- 全等,判断左右两个值是否全等,它和相等类似,只不过它不会进行自动的类型转换,
- 如果两个值的类型不同,则直接返回
false
!==
- 不全等,和不等类似,但是它不会进行自动的类型转换,如果两个值的类型不同,它会直接返回
true