类型转换规则
运算规则
面试题分析
腾讯:
0 == ''
0 == '0'
2 == true
2 == false
false == 'false'
false == '0'
false == undefined
false == null
null == undefined
' \t\r\n' == 0
分析:
0 == '' // 都是原始类型,转为数字比较 0 == 0 true
0 == '0' // 都是原始类型,转为数字比较 0 == 0 true
2 == true // 都是原始类型,转为数字比较 2 == 1 false
2 == false // 都是原始类型,转为数字比较 2 == 0 false
false == 'false' // 都是原始类型,转为数字比较 0 == 1 false
false == '0' // 都是原始类型,转为数字比较 0 == 0 true
false == undefined // undefined和null只有与自身比较或互相比较时,才为true false
false == null // undefined和null只有与自身比较或互相比较时,才为true false
null == undefined // undefined和null只有与自身比较或互相比较时,才为true true
' \t\r\n' == 0 // 都是原始类型,转为数字比较 0 == 0 true
网易:
null + '1' == null + 1
null + 1 == 1
null == 0
null == undefined
null + 1 == undefined
null + null == undefined + undefined
分析:
null + '1' == null + 1 // 左边 null + '1' => 0 + '1' = '01' 右边 null + 1 = 0 + 1 = 1,结果false
null + 1 == 1 // 左边 null + 1 = 0 + 1 = 1,结果true
null == 0 // undefined和null只有与自身比较或互相比较时,才为true 结果false
null == undefined // undefined和null只有与自身比较或互相比较时,才为true 结果true
null + 1 == undefined // undefined和null只有与自身比较或互相比较时,才为true 结果true
null + null == undefined + undefined // 左边 0 + 0, 右边 undefined转为数字时为NaN,而比较时只要有一边为NaN结果一定时false,所以结果false
新东方:
var obj1 = {
a: 1,
b: 2,
valueOf: function() {
return this.a + this.b
},
toString: function() {
return 1
}
}
var obj2 = {
toString: function() {
return 0
}
}
console.log(obj1 + obj2)
分析,结合第一张图,结果为3