js(学习笔记) ---- 九层之台,起于累土;javascript
都是等于比较 == 相对比较 === 严格比较java
// == 相对等于 两边值类型不一样时,会发生隐式类型转换 再比较
// 当比较两个值时 若是类型不一样 会转换成相同类型 再进行比较
// 其余类型 跟 数字进行比较时 先转换成数字 再进行比较
// Number()
console.log('2' == 2) // Number('2') == 2 => true
console.log('' == 0) // Number('') == 0 => 0 == 0 => true
console.log([] == 0) // Number([]) == 0
console.log(false == 0) // 0 == 0 => true
console.log(true == 1) // 1 == 1 => true
// 其余类型跟boolean值进行比较 两边值都转换成数字 再比较
// true => 1
// false => 0
'' == false // Number('') == Number(false) => true
[1] == false // Number([1]) == Number(false) => 1 == 0 => false
// 字符串和引用类型进行比较 把引用类型转换成字符串
// 每一个对象数据类型 toString() 转换成字符串
var obj = {}
// obj.toString() => "[object Object]"
// abc' == "[object Object]"
'abc' == obj // false
console.log("[object Object]" == obj)
var obj2 = { id: 1, title: 'title' }
// {} 普通对象 转换成字符串 都是 "[object Object]"
obj2.toString() // "[object Object]"
var arr = [1]
// arr.toString() => '1'
'1' == arr // '1' == arr.toString() => '1' == '1' => true
var ary = [1, 2, 3, 4]
'2' == ary // '2' == "1,2,3,4"
// ary.toString() => "1,2,3,4"
"1,2,3,4" == ary // "1,2,3,4" == "1,2,3,4" => true
// 引用类型与引用类型进行比较
// 只要你建立一个对象 var 变量 = {}
// 浏览器就会分配一起新的内存
// o1 o2 存储的是两块不一样内存的引用地址
// 内存1 xxxfff111
var o1 = {id: 1}
// 内存2 xxxfff222
var o2 = {id: 1}
// 内存3 xxxfff333
var a1 = []
// xxxfff111 == xxxfff222
console.log(o1 == o2)
// xxxfff111 == xxxfff333
console.log(o1 == a1)
// 假设引用地址 xx2
var o4 = {title: 'o4'}
// o5 = xx2
var o5 = o4
// xx2 == xx2
console.log(o5 == o4)
// 特殊记
// NaN 跟任何值都不相等(包括跟本身)
NaN == NaN // false
NaN == null
NaN == 0
// null 和 undefined 相对比较 为true
console.log(null == undefined) // true
// 它两和其余类型都不相等
null == 0 // false
// == 相对比较时 比较规则
// 1.其余类型跟数字进行比较时 先转换成数字 再进行比较
// 2.其余类型跟boolean值进行比较 两边值都转换成数字 再比较
// 3.字符串和引用类型进行比较 把引用类型转换成字符串
// 4.引用类型和引用类型比较 比较的是引用地址
// 5.特殊记 NaN null undefined
// === 绝对等于 不会进行类型转换
// 两边类型不一样 直接就返回false
// 若是类型相同 就比较具体值
// 引用类型和引用类型比较 比较的是引用地址
'1' == 1 // true
'1' === 1 // false
null === undefined // false
// 尽可能用===严格比较
'1' == 1
// eslint 代码检查工具 规范代码
// != 相对不等于 会类型转换
// !== 严格不等于
// 0 '' null undefined NaN 都是false
// []转换成boolean 是true 取反后 false
// ![] => !true => false
console.log([] == ![]) // [] == false => 0 == 0 => true
复制代码
----------------------------------------------------------------------------------------------------------------
参考文章&&强烈推荐:布罗利浏览器