js类型转换,纯干货

没有废话,纯干货

一、(any)=>boolean

任何类型转为布尔类型

先来看题目,诸位自测(自测答案无法理解可留言)

// 题目1:如下代码输出什么?
if ("hello") {
    console.log("hello")
}

// 题目2:如下代码输出什么?
if ("") {
    console.log('empty')
}

// 题目3:如下代码输出什么?
if (" ") {
    console.log('blank')
}

// 题目4:如下代码输出什么?
if ([0]) {
    console.log('array')
}

// 题目5:如下代码输出什么?
if('0.00'){
  console.log('0.00')
}

答案揭晓

1、"hello"
2、
3、"blank"
4、"array"
5、"0.00"

转换规则解密

类型 转为布尔的结果
undefined false
null false
number +/-0、NaN为false,其他为true
string ""/''为false,即空字符串为false,其他为true
object true

总之:boolean(any)

二、== 连接的两个表达式的类型转换

非全等符号连接的两个表达式直接进行判断时的类型转换

先来看题目,诸位自测(自测答案无法理解可留言)

"" == 0  //题目1
" " == 0  //题目2
"" == true  //题目3
"" == false  //题目4
" " == true  //题目5
!" " == true  //题目6
!" " == false  //题目7
"hello" == true  //题目8
"hello" == false //题目9
"0" == true  //题目10
"0" == false  //题目11
"00" == false  //题目12
"0.00" == false  //题目13
undefined == null  //题目14
{} == true  //题目15
[] == true  //题目16
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //题目17
obj == 1  //题目18
obj == true  //题目19

答案揭晓

1、true
2、true
3、false
4、true
5、false
6、false
7、true
8、false
9、false
10、false
11、true
12、true
13、true
14、true
15、false
16、false
17、false
18、true
19、true

转换规则解密

x y 结果
undefined null true
number string y = Number(string),再进行比较
boolean (any) x = Number(boolean),再进行比较
object string or number object.valueOf()如果得到基础数据类型则直接进行比较,否则,再调用object.toString(),再进行比较
otherwise otherwise false

总之:除undefined与null外,其他类型都转为number

你可能感兴趣的:(js类型转换,纯干货)