Javascript中Null和undefined的簡單理解
前言
在 JavaScript 中有兩種表達(dá)“無”的方式,那就是使用undefined和null。
undefined
如果您創(chuàng)建一個(gè)變量并且不對(duì)其進(jìn)行任何設(shè)置,它將是undefined. ??
let dog; console.log(dog);
undefined是已經(jīng)創(chuàng)建(變量)但尚未定義(給定值)的東西。
對(duì)象的屬性也是如此。
一個(gè)不具有任何屬性的person對(duì)象。
let person={ }
如果在控制臺(tái)中輸入person.dog
,它將返回undefined。
為什么?因?yàn)閜erson什么都沒有。這就是undefined的。
當(dāng)嘗試訪問已創(chuàng)建但未賦予值的變量時(shí),就會(huì)出現(xiàn)這種情況。
如果在控制臺(tái)中輸入test,您會(huì)看到返回的錯(cuò)誤消息說*“test is not defined”*,這意味著您沒有創(chuàng)建名為test的變量.
對(duì)于我們上面使用的狗示例,我們已經(jīng)創(chuàng)建了變量,但我們沒有設(shè)置值。這就是區(qū)別。
Null
現(xiàn)在我們將討論null類型。
Null 是空值,而 undefined 是尚未設(shè)置值的變量。
我們將通過一些示例進(jìn)行演示。
在控制臺(tái)輸入下面的代碼。
let somethingUndefined; const somethingNull = null;
注意:您不能在不設(shè)置值的情況下使用 const 變量。
somethingUndefined
是未定義的,因?yàn)樗鼪]有設(shè)置值,而somethingNull
具有 null 的值,它什么都沒有。它們都什么都不是,只是方式不同。
例如,假設(shè)我們有 Cher 和 Teller(他們都是真人),我們將在這樣的對(duì)象中表示他們 ??
const zhangsan = { mane: "zhangsan",}; const lisi = { name: "lisi", age: 18,}; lisi.mane = "li"; lisi.age = null;
在此示例中,zhangsan沒有age屬性。
另一方面,我們又將lisi的age設(shè)置為null。
在控制臺(tái)中,如果您鍵入,zhangsan.age
您將看到返回的 undefined 值。當(dāng)您嘗試lisi.age
時(shí),將返回 null 的值。
用一句話總結(jié)兩者的區(qū)別就是:undefined 表示一個(gè)變量自然的、最原始的狀態(tài)值,而 null 則表示一個(gè)變量被人為的設(shè)置為空對(duì)象,而不是原始狀態(tài)。所以,在實(shí)際使用過程中,為了保證變量所代表的語義,不要對(duì)一個(gè)變量顯式的賦值 undefined,當(dāng)需要釋放一個(gè)對(duì)象時(shí),直接賦值為 null 即可。
附:實(shí)際應(yīng)用
上面說了那么多,好像除了增加復(fù)雜性之外,并沒有什么實(shí)際的用處。
下面用代碼演示這兩種類型的實(shí)際用法,可以體會(huì)不存在和空值具體有什么區(qū)別和用處:
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}
從上面的代碼可以看到,把一個(gè)對(duì)象的屬性設(shè)置成undefined后,這個(gè)屬性就消失了、不存在了。而設(shè)置成null,這個(gè)屬性還是存在,只不過是null值。
如果你想讓對(duì)象中某個(gè)屬性消失,那么就把它設(shè)置成undefined吧。這也許是undefined和null同時(shí)存在的最大的意義。
總結(jié)
到此這篇關(guān)于Javascript中Null和undefined的文章就介紹到這了,更多相關(guān)JS Null和undefined內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
select自定義小三角樣式代碼(實(shí)用總結(jié))
這篇文章主要介紹了select自定義小三角樣式,通過css HTML js 代碼詳細(xì)展示了操作過程,自定義小三角樣式,也可以做出select文字居中的效果,需要的朋友可以參考下2017-08-08原生JS實(shí)現(xiàn)的碰撞檢測(cè)功能示例
這篇文章主要介紹了原生JS實(shí)現(xiàn)的碰撞檢測(cè)功能,涉及javascript鼠標(biāo)事件響應(yīng)及頁面圖形坐標(biāo)位置運(yùn)算、檢測(cè)相關(guān)操作技巧,需要的朋友可以參考下2018-05-05微信小程序自定義navigationBar頂部導(dǎo)航欄適配所有機(jī)型(附完整案例)
這篇文章主要介紹了微信小程序自定義navigationBar頂部導(dǎo)航欄適配所有機(jī)型(附完整案例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04微信小程序?qū)崿F(xiàn)猜數(shù)字小游戲的實(shí)戰(zhàn)過程
一起猜數(shù)字是微信一款休閑類小游戲,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)猜數(shù)字小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12用javascript實(shí)現(xiàn)始終保持打開同一個(gè)子窗口以及關(guān)閉父窗口同時(shí)自動(dòng)關(guān)閉所有子窗口
用javascript實(shí)現(xiàn)始終保持打開同一個(gè)子窗口以及關(guān)閉父窗口同時(shí)自動(dòng)關(guān)閉所有子窗口...2007-06-06