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