此篇文章講解目錄:
null
undefined
null和undefined的關係
null和undefined的區別
null(空值,曾經賦過值,但是目前沒有值)
邏輯上null表示一個空對象的指針
使用typeof檢測的時候會返回object;(object原型的終點也是null)
undefined(沒有值,指從沒有賦過值)
使用var聲明變量但沒有初始化/賦值的
區分空對象指針與尚未定義的變量
對未初始化的變量以及未聲明的變量使用typeof運算符均會返回undefined;
注意:console.log(xxx) 和 var xxx;console.log(xxx);是不同的,前者是語法錯誤,後者才是undefined
null和undefined的關係
undefined派生自null;因為undefined派生子null;所以Null和undefined做比較的時候是true;但是null和undefined和別的人和類型比較都不想等;
undefined派生子null,因此在使用”==”進行比較的時候會返回true;
沒有必要將變量顯示聲明undefined;
聲明非空對象對應將其賦值為null;比如做定時器的時候用timer=null來重置變量;
null和undefined的區別
null和undefined都是表示沒有的,不存在的值;他們兩個在進行邏輯轉換時候都是false;這兩個值進行比較是true;
Null和undefined沒有toString方法;所以null和undefined和數據比較都是false;
因為undefined派生自null,所以undefined和null做數據類型比較的時候的true;
null表示空引用,它是object類型,undefined表示未定義,它是undefined類型;
null是object類型,但不是object的實例;用instanceof為false;
如果一個變量的值是null,那麼必須主動的給它賦值null;
一個變量未定義,或者變量定義裡未賦值;則是undefined;
需要注意的是,一個變量如果沒有定義,是不能直接在程序裡使用的(就是不能直接讀取,但可以賦值);比如說,本來沒有定義一個叫a的變量;但是我去aconsole.log(a);在瀏覽器裡這個語法會報錯的;但是可以用typeof去運算;但是如果a定義了,但沒有賦值;可以讀,它的值就是undefined;表示這個變量沒有被賦值;
對於屬性來說,如果原來沒有這個屬性,根本就不存在這個屬性,那麼它的值就是undefined;
對象的屬性不需要定義,如果不存在也可以直接去讀,不會報錯,而會給一個undefined的值;
如果這個對象以後要用;但是現在還沒有值,一般情況下,會給他一個null的值;
-
在函數(方法)裡,如果必須返回值;但是值又計算不出來,那就返回一個null;
比如網頁中沒有ID是div1的元素,則下面的這句腳本返回null;
Document.getElementById(“div1”)//返回null;
但是沒有返回值的函數,它的返回值都是undefined;
大家好接下來我們會邀請前端架構師以連載的方式,通過30天的實戰系統講解JavaScript的專業知識,歡迎大家關注頭條號“互聯網IT信息”。
閱讀更多 互聯網IT信息 的文章