JavaScript中 == 和 === 都是相等的意思,兩者有什么區(qū)別呢萎战?
==:指的是值相等,兩邊值類型不同的時(shí)候舆逃,要先進(jìn)行類型轉(zhuǎn)換蚂维,再比較。
轉(zhuǎn)換規(guī)則:
1. 數(shù)字跟字符串路狮,轉(zhuǎn)數(shù)字
2. 布爾值要先轉(zhuǎn)數(shù)字
3. 對象轉(zhuǎn)換成基礎(chǔ)類型虫啥,利用它的toString或者valueOf方法。 js核心內(nèi)置類奄妨,會嘗試valueOf先于toString;valueOf返回原始值涂籽,如 '1'?.valueOf() // '1'? ,null 和 underfined不可以
===: 指的是值相等外數(shù)據(jù)類型也要相同,類型不同的一定不等
注意:
1. 兩邊的內(nèi)容是對象或者是對象的函數(shù)屬性時(shí)砸抛,則比較內(nèi)存地址是否相等评雌。[1,2,3] == [1,2,3]// false
2. 所有判斷都用=== 而不用 == 树枫,除了判斷 x == null,因?yàn)榧磳?x == null 是 x === null || x === undefined 的縮寫
3.?NaN == NaN; (isNaN()方法判斷是否為NaN) // false? ? null == undefined; // true