类型转换
显示类型转换
-
转换为数值类型
-
Number(mix) -
parseInt(String) -
parseFolat(String)
-
-
转换为字符串类型
-
toString() -
String(mix)
-
-
转换为布尔类型
-
Boolean(mix)
-
隐式类型转换
javaScript的数据类型隐式转换主要分为三种情况:
转换为Boolean类型
转换为Number类型
转换为String类型
注:值在 逻辑判断 和 逻辑运算 时会隐式转换为Boolean类型
布尔值类型转换规则
| 数据值 | 转换后的布尔值 |
|---|---|
| 数字 0 | false |
| NaN | false |
空字符串 "" | false |
| null | false |
| undefined | false |
非!0数字 | true |
非空字符串!"" | true |
非!null对象类型 | true |
注意事项:使用new运算符创建的对象隐式转换为boolean类型的值都是true。
连续的两个非操作可以将一个数强制转换为boolean类型
运算符
当加号运算符作为一元运算符运算值时,他会将该值转换为Number类型
'' + // 0
'0' + //0
'10' + //10
'String' + //NaN
true + // 1
false + // 0
undefined + // 0
null + // 0
[] + // 0
![] + // 0
[1] + // 1
[1,2] + // NaN
[[1]] + // NaN
[[1,2]] + // NaN
{} + // NaN
function(){}; //NaN
+'' + // 0
当加号运算符作为二元运算符的操作值时,他会根据两边值类型进行数据类型隐式转换。
首先,当引用对象类型的值进行二元加号运算符运算时,会涉及到转换为原始数据类型的问题。事实上,当一个对象执行例如加法操作的时候,如果他是原始类型,那么就不需要转换,否则,将遵循一下规则:
-
调用实例的
valueOf()方法,如果有返回的是基础类型,停止下面的过程,否则继续。 -
调用实例的
toString()方法,如果有返回的是基础类型,停止下面的过程,否则继续 -
都没返回原始类型,就会报错。
👍注意事项:当{}+任何值时,前一个{}都会被JavaScript解释成空块并忽略他。
”1“ + 1 // ”11“
"1" + "1" // "11"
"1" +true // "1true"
"1"+NaN // "NaN"
"1" +[] // "1"
"1"+ {} // "1[object Object]"
"1" +function(){} //"1function(){}"
"1" + new Boolean() // "1false"
1+NaN // NaN
1+'true' // "1true"
1+ true // 2
1+ undefined // NaN
1+null // 1
1 + [] // "1"
1 +[1,2] // "11,2"
1 + {} // "1[object Object]"
1 + function(){} "1function(){}"
1 + Number() // 1
1 + String() // "1"
[] + [] //""
{} + {} // ”[object Object][object Object]“
{} + [] // 0
{a:0} + 1 // 1
[] + {} // ”[object Object] “
相等运算符
相等运算符== 会对操作值进行隐式转换后进行比较
-
如果其中一个操作值为布尔值,则在比较之前先将其转换为数值
-
如果其中一个操作值为字符串,另一个操作值为数值,则通过
Number()函数将字符串转换为数字 -
如果其中一个操作值是对象,另一个不是,则调用对象的
valueOf()方法,得到的结果按照前面的规则进行比较 -
null与undefined时相等的 -
如果操作值为
NaN,则返回false -
如果两个操作值是对象,则比较他们是不是指向同一个对象
'1' == true // true
'1' == 1 //true
'1' == {}; //false
'1' == []; // false
来源:网址
本文详细介绍了JavaScript中的数据类型隐式转换,包括转换为Boolean、Number和String类型的情况,以及加号运算符的一元和二元操作、相等运算符的比较规则,以及valueOf()和toString()方法的应用。
893

被折叠的 条评论
为什么被折叠?



