没有废话,纯干货
一、(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