關於undefined,null,NaN,以及引用值的一點小記
阿新 • • 發佈:2018-12-10
在JavaScript中,undefined
以及null
同樣是表示空值(沒有實際意義)。
undefined == null;
事實上,上面這段程式碼的返回結果也是true
,然後他們倆有什麼區別嗎,首先是語義上面的區別,undefind
在JavaScript中表示的是已經聲明瞭,但是沒有賦值,相當於是對只是被聲明瞭的狀態的表示,是的沒錯,我更願意把他理解為一種狀態,而null
就更像是一個值了,他表示的就是一個空,就是啥都沒有,實際上也是一種狀態(至少我是這麼理解的)。
NaN
也是一個比較有趣的值。
在執行自比較之中:NaN,也只有NaN,比較之中不等於它自己。
我的理解是他是一種表示錯誤的值,他的存在就是為了表示JavaScript中數值的運算錯誤。就像當於是在遇到數值運算的錯誤時,不終止程式的執行(對,我們的JavaScript真真的是個老好人),只是把這個錯誤作為一個值丟擲來
最後再講一下子引用值,和原始值不同,我們是沒有辦法直接訪問到他的,我們只能通過一個指標來訪問引用值,引用值型別有Funtion
Object
Array
這三種,在引用值的比較,他並沒有去找到指標所指的原始值然後在進行比較,而是比較這個指標(怎麼這次就不去找指標所指的值了呢)。所以即使是有時候我們把兩個引用值來進行比較,即使這兩個值是相等的,但是應用的指標不是同一個,所以比較的時候還是還反悔
false
.
obj1 = {};
obj2 = {};
if(obj1 === obj2) {
console.log("true");
}
else {
console.log("false");
}
這裡的結果看起來應該是true
對吧,但是他的實際結果是false
但是吧對於
{} === {}
的返回值卻是false
,這裡還是有一點以後。。。