javascrit中undefined和null的區(qū)別詳解
1、Undefined
Undefined 類型只有一個(gè)值,即特殊的undefined。根據(jù)工作中總結(jié),只要有這幾種情況下會(huì)出現(xiàn)undefined。
1.定義變量,但是沒(méi)有初始化時(shí),如var a;
2.調(diào)用某個(gè)函數(shù)時(shí),實(shí)參個(gè)數(shù)小于形參個(gè)數(shù)時(shí),未實(shí)參化的形參在函數(shù)調(diào)用過(guò)程中的值是undefined;
3.調(diào)用某個(gè)對(duì)象還沒(méi)有添加的屬性時(shí),也會(huì)返回undefined;
var obj={} console.log(obj.name);//undefined
4.調(diào)用某個(gè)沒(méi)有返回值的函數(shù),也會(huì)返回undefined;
function Person(name,age){ this.name=name; this.age=age; } var p=Person("李四",23);//此時(shí)的p=undefined;
5.對(duì) 未初始化的變量 執(zhí)行 typeof 操作符會(huì)返回 undefined 值;
6.對(duì) 未聲明的變量 執(zhí)行 typeof 操作符同樣也會(huì)返回 undefined 值。
var message; // 這個(gè)變量聲明之后默認(rèn)取得了 undefined 值 //未初始化的變量 alert(typeof message); // "undefined" //未申明的變量 alert(typeof age); // "undefined"
2、Null 類型
是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是 null。從邏輯角度來(lái)看,null值表示一個(gè)空對(duì)象指針,要意在保存對(duì)象的變量還沒(méi)有真正保存對(duì)象。而這也正是使用 typeof 操作符檢測(cè) null值時(shí)會(huì)返回"object"的原因。這幾種情況下會(huì)出現(xiàn)null的情況
1、手動(dòng)設(shè)置變量的值或者對(duì)象某一個(gè)屬性值為null(在初始化對(duì)象時(shí),手動(dòng)設(shè)置對(duì)象為null。在作用域中不再需要使用某個(gè)對(duì)象時(shí),把null賦值給那個(gè)變量解除引用,以釋放內(nèi)存)
2、在javascript的DOM元素獲取中,如果沒(méi)有獲取到指定的元素對(duì)象,結(jié)果一般是null。
var d=document.getElementById("d"); console.log(d);//當(dāng)沒(méi)有id為"d"的標(biāo)簽時(shí)返回null
3、Object.prototype._proto_的值也是null。(每一個(gè)對(duì)象都有__proto__屬性,指向?qū)?yīng)的構(gòu)造函數(shù)的prototype屬性,但是因?yàn)镺bject是所有類的基類,其沒(méi)有對(duì)應(yīng)的構(gòu)造函數(shù),所有Object.prototype._proto_值為空);
console.log("a".__proto__); //指向的是String的prototype屬性 //String {"", length: 0, constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}
4、在正則捕獲的時(shí)候,如果沒(méi)有捕獲到結(jié)果,默認(rèn)也是null。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽庫(kù)實(shí)例
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽庫(kù),以實(shí)例形式分析了JavaScript設(shè)置水平、垂直拖拽及限制拖拽范圍的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09ES6實(shí)現(xiàn)的遍歷目錄函數(shù)示例
這篇文章主要介紹了ES6實(shí)現(xiàn)的遍歷目錄函數(shù),涉及ES6文件目錄的遍歷、讀取、回調(diào)函數(shù)及json相關(guān)操作技巧,需要的朋友可以參考下2017-04-04JavaScript實(shí)現(xiàn)表格動(dòng)態(tài)變色
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)表格動(dòng)態(tài)變色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09JavaScript判斷數(shù)組重復(fù)內(nèi)容的兩種方法(推薦)
本文給大家介紹兩種JavaScript判斷數(shù)組重復(fù)內(nèi)容的方法(推薦)非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-06-06JavaScript中常見(jiàn)的高階函數(shù)總結(jié)
JavaScript的函數(shù)其實(shí)都指向某個(gè)變量,既然變量可以指向函數(shù),函數(shù)的參數(shù)能接收變量,那么一個(gè)函數(shù)就可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)就稱之為高階函數(shù),這篇文章主要給大家介紹了關(guān)于JavaScript中常見(jiàn)的高階函數(shù),需要的朋友可以參考下2022-02-02uniapp開(kāi)發(fā)h5項(xiàng)目引入第三方j(luò)s(sdk)兩種方法
這篇文章主要給大家介紹了關(guān)于uniapp開(kāi)發(fā)h5項(xiàng)目引入第三方j(luò)s(sdk)的兩種方法,在Uniapp中引入JS文件是一項(xiàng)常見(jiàn)的操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02基于Cesium實(shí)現(xiàn)衛(wèi)星在軌繞行動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了如何利用Cesium實(shí)現(xiàn)衛(wèi)星在軌繞行動(dòng)畫,文中的示例代碼講解詳細(xì),對(duì)我們了解Cesium有一定的幫助,感興趣的可以嘗試一下2022-06-06js創(chuàng)建一個(gè)input數(shù)組并綁定click事件的方法
這篇文章主要介紹了js創(chuàng)建一個(gè)input數(shù)組并綁定click事件的方法,需要的朋友可以參考下2014-06-06文本框只能輸入數(shù)字的實(shí)現(xiàn)方法(兼容IE火狐)
下面小編就為大家?guī)?lái)一篇文本框只能輸入數(shù)字的實(shí)現(xiàn)方法(兼容IE火狐)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06