==
同类型比较
左右两边为字符,比较的是unicode值
左右两边为字符串,比较的是两边字符串第一个字符的unicode值
NaN不和任何值相等
不同类型比较
数字与非数字 ==> 非数字先转换为数字再判断
NaN不和任何值相等
''==0 true
' '==0 true
''==false true
' '==false true
18=='18' true
1==true true
undefined == null true
===
既包含数值比较有包含类型比较
如何判断NaN
isNaN(value)
null与undefined区别
历史原因,先设置null后设置undefined
typeof(null) === object
typeof(undefined) === undefined
Number(null) == 0
Number(undefined) == NaN
parseInt(null) == NaN
parseInt(undefined) == NaN
undefined为window关键字
console.log(void 0) undefined
console.log(void 1) undefined
console.log(void 2) undefined
… undefined
console.log(void 任意类型数据) undefined
console.log(undefined in window) //true
console.log(null in window) //false
function Fn(){
let undefined = 10
console.log(undefined)
}
Fn() //10
function Fn(){
let undefined = 10
console.log(void 0)
}
Fn() //undefined
null == undefined true