您好,登錄后才能下訂單哦!
這篇文章給大家介紹JavaScript中null和undefined的區別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
網上有很多關于null和undefined區別的論述,看似講了很多知識,但又好像沒什么用,無法指導實際開發。結論大多是null和undefined基本一樣,只有細微差別,是歷史設計錯誤的產物,甚至應該把其中一個從語言中去掉。
實際上,這兩個值還是有很大的區別的,并且這兩個值還有存在的意義。
undefined代表未定義,也就是不存在的意思。也可以換個角度,就是應該有值,但是還沒賦值,連null值都沒有賦予。
var foo; console.log(foo); // undefined foo = null; console.log(foo); // null console.log(bar); // Uncaught ReferenceError: bar is not defined
null則代表有值,是存在的,但是為空值。空值不是不存在,而是有一個叫做空值的值。在語言層面,null是object,是一種特殊的空對象。如果把一個變量賦予null,則該變量原先指向的對象可以被GC回收,釋放內存空間。當然也可以認為null是null類型,這不影響實際的意義。
console.log(typeof(null)); // object console.log(typeof(undefined)); // undefined
在 TypeScript 中,有undefined和null類型,這兩種類型都只有唯一一個值,就是它們自己。并且是其它所有類型的子類型,可以賦值給任何類型。
let u: undefined = undefined; let n: null = null; let num: number = u;
上面說了那么多,好像除了增加復雜性之外,并沒有什么實際的用處。
下面用代碼演示這兩種類型的實際用法,可以體會不存在和空值具體有什么區別和用處:
var foo = {a:1, b:2}; console.log(JSON.stringify(foo)); // {"a":1,"b":2} foo = {...foo, a:null}; console.log(JSON.stringify(foo)); // {"a":null,"b":2} foo = {...foo, a:undefined}; console.log(JSON.stringify(foo)); // {"b":2}
從上面的代碼可以看到,把一個對象的屬性設置成undefined后,這個屬性就消失了、不存在了。而設置成null,這個屬性還是存在,只不過是null值。
如果你想讓對象中某個屬性消失,那么就把它設置成undefined吧。這也許是undefined和null同時存在的最大的意義。
JavaScript是一種直譯式的腳本語言,其解釋器被稱為JavaScript引擎,是瀏覽器的一部分,JavaScript是被廣泛用于客戶端的腳本語言,最早是在HTML網頁上使用,用來給HTML網頁增加動態功能。
關于JavaScript中null和undefined的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。