js中有=,==,===。這三者是有區(qū)別的。很容易區(qū)分=和==,只要學(xué)過程序設(shè)計(jì)的都知道。但對于===,可能就不是那么熟悉了。==和===都用在布爾表達(dá)式中,但2者有很大的區(qū)別。
先說說===吧:
===表示的是絕對的相等。
1.如果類型不相等就不等。
2.如果兩個(gè)都是數(shù)值,并且是同一個(gè)值,判定相等。
3.如果兩個(gè)都是字符串,每個(gè)位置的字符都一樣,那么相等;否則不相等。
4.如果兩個(gè)值都是true,或者都是false,那么相等。
5.如果兩個(gè)值都引用同一個(gè)對象或函數(shù),那么相等;否則不相等。
6.如果兩個(gè)值都是null,或者都是undefined,那么相等。
再來看===:
如果兩個(gè)值相等,肯定相等,如果兩個(gè)值不等,也可能是相等的,按一下情況進(jìn)行判斷:
1.如果一個(gè)是null、一個(gè)是undefined,那么相等。
2.如果一個(gè)是字符串,一個(gè)是數(shù)值,把字符串轉(zhuǎn)換成數(shù)值再進(jìn)行比較。
3.如果任一值是 true,把它轉(zhuǎn)換成 1 再比較;如果任一值是 false,把它轉(zhuǎn)換成 0 再比較。
4.如果一個(gè)是對象,另一個(gè)是數(shù)值或字符串,把對象轉(zhuǎn)換成基礎(chǔ)類型的值再比較。對象轉(zhuǎn)換成基礎(chǔ)類型,利用它的toString或者valueOf 方法。js核心內(nèi)置類,會(huì)嘗試valueOf先于toString;例外的是Date,Date利用的是toString轉(zhuǎn)換。非js核心的對象,例外。
一般都往數(shù)值轉(zhuǎn)。
淺談Css盒模型在FF和IE中的區(qū)別例子:
"1" == true;是true。true轉(zhuǎn)成1,再把“1”轉(zhuǎn)成1,進(jìn)行比較。
簡而言之就是“==”只要求值相等。“===”要求值和類型都相等。===是嚴(yán)格的判斷。
posted on 2011-08-26 10:16
墻頭草 閱讀(562)
評論(0) 編輯 收藏