我們一般將兩個量進行比較時,==用的比較多,今天看到乙個小題是:undefined和null是否相等,console.log(undefined==null)的值
為什麼??
有人說:ecmascript認為undefined是null派生出來的,所以輸出為true。
也有人說:
1、null表示"沒有物件",即該處不應該有值。典型用法是:
(1) 作為函式的引數,表示該函式的引數不是物件。2、undefined表示"缺少值",就是此處應該有乙個值,但是還沒有定義。典型用法是:(2) 作為物件原型鏈的終點。
(1)變數被宣告了,但沒有賦值時,就等於undefined。(2) 呼叫函式時,應該提供的引數沒有提供,該引數等於undefined。
(3)物件沒有賦值的屬性,該屬性的值為undefined。
(4)函式沒有返回值時,預設返回undefined。
然後看到拓展了一下的機智網友:那麼console.log(undefined===null)的值為什麼??
console.log(undefined===null); //false ,兩者的所屬的資料型別不一致
然後stop,言歸正傳 ---------------------- js中的==和===的區別???
==用於一般比較,===用於嚴格比較,==在比較的時候可以轉換資料型別,===嚴格比較,只要型別不匹配就返回flase。舉例說明:
"1" == true
型別不同,"=="將先做型別轉換,把true轉換為1,即為 "1" == 1;
此時,型別仍不同,繼續進行型別轉換,把"1"轉換為1,即為 1 == 1;
此時,"==" 左右兩邊的型別都為數值型,比較成功!
如果比較:"1" === true 左側為字元型,右側為bool布林型,左右兩側型別不同,結果為false;
如果比較:"1" === 1 左側為字元型,右側為int數值型,左右兩側型別不同,結果為false;
如果比較: 1 === 1 左側為int數值型,右側為int數值型,左右兩側型別相同,數值大小也相同,結果為true;
如果比較: 1 === 2 左側為int數值型,右側為int數值型,左右兩側型別相同,但數值大小不同,結果為false;
簡而言之:"==" 只要求值相等; "===" 要求值和型別都相等。
JS中的 和 的區別
簡單來說 代表相同,代表嚴格相同。這麼理解 當 進行比較時候 先檢查兩個運算元資料型別,如果相同,則進行 比較,如果不同,則進行一次型別轉換,轉換成相同型別後再進行比較,而 比較時,如果型別不同,直接就是false。雙等號 的比較過程 如果兩個值型別相同,再進行三個等號 的比較 在轉換不同的資料型別...
JS中的! ! 的用法和區別。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var num 1 var str 1 var test 1 test num true 相同型別 相同值 test num true 相同型別 相同值 test num false test與nu...
JS中的! ! 的用法和區別。
js 與 的區別 1 對於string,number等基礎型別,和 是有區別的 1 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等,如果型別不同,其結果就是不等 2 同型別比較,直接進行 值 比較,兩者結果一樣 2 對於array,object等高階型別,和 是沒有區別的 進行 指標...