JavaScript中null與undefind的區(qū)別有哪些?
JavaScript中null與undefind的區(qū)別有哪些?
我要提問(wèn)推薦答案
JavaScript 中 和 是兩個(gè)不同的值,它們有以下幾個(gè)區(qū)別:null、undefined
1.變量聲明但未賦值時(shí)的默認(rèn)值:在 JavaScript 中,未初始化的變量默認(rèn)值為 ,而不是 。undefined、null
let x;
console.log(x); // 輸出 undefined
2.數(shù)據(jù)類型:分別是 JavaScript 中的兩種不同的數(shù)據(jù)類型。表示一個(gè)空對(duì)象指針,通常用于表示一個(gè)變量沒(méi)有引用任何對(duì)象,而 表示一個(gè)未定義的值,通常用于表示變量未被賦值。null、undefined、null、undefined
console.log(typeof null); // 輸出 object
console.log(typeof undefined); // 輸出 undefined
3.類型轉(zhuǎn)換: 和 在進(jìn)行類型轉(zhuǎn)換時(shí)有一些差別。當(dāng)將 轉(zhuǎn)換為數(shù)字或字符串時(shí),會(huì)返回 0 和 “null”,而將 轉(zhuǎn)換為數(shù)字或字符串時(shí),則會(huì)返回 NaN 和 “undefined”。null、undefined、null、undefined
console.log(Number(null)); // 輸出 0
console.log(String(null)); // 輸出 "null"
console.log(Number(undefined)); // 輸出 NaN
console.log(String(undefined)); // 輸出 "undefined"
4.對(duì)象屬性的默認(rèn)值:在 JavaScript 中,訪問(wèn)不存在的對(duì)象屬性會(huì)返回 ,而不是 。undefined、null
const obj = {};
console.log(obj.prop); // 輸出 undefined
總的來(lái)說(shuō), 和 是 JavaScript 中的兩個(gè)不同的值,它們的用途和行為略有不同,需要根據(jù)實(shí)際情況選擇使用哪個(gè)值。
其他答案
-
一、相似性:1、在JavaScript中將某個(gè)變量賦值為undefined或null,實(shí)際上沒(méi)有太大的差別,兩者都是表示某個(gè)變量的值為“空”。2、undefined和null在if語(yǔ)句中,都會(huì)被自動(dòng)轉(zhuǎn)為false,相等運(yùn)算符甚至直接報(bào)告兩者相等。二、歷史原因:與javaScript的歷史有關(guān)。1995年時(shí),最初像java一樣,只設(shè)置了null作為表示“無(wú)”的值。根據(jù)c語(yǔ)言的傳統(tǒng),null被設(shè)計(jì)為可以自動(dòng)轉(zhuǎn)為0。三、最初設(shè)計(jì):javaScript的最初版本是這樣區(qū)分的:null是一個(gè)表示“無(wú)”的對(duì)象,轉(zhuǎn)為數(shù)值時(shí)為0;undefined是一個(gè)表示“無(wú)”的原始值,轉(zhuǎn)為數(shù)值時(shí)為NaN。四、目前的用法:null和undefined基本是同義的,只有一些細(xì)微的差別。
-
1、undefined不是關(guān)鍵字,而null是關(guān)鍵字;var undefined=“” //undefinedvar null=“” //會(huì)報(bào)錯(cuò)2、undefined和null被轉(zhuǎn)換為布爾值的時(shí)候,兩者都為false;3、undefined在和null進(jìn)行==比較時(shí)兩者相等,全等于比較時(shí)兩者不等4、使用Number()對(duì)undefined和null進(jìn)行類型轉(zhuǎn)換時(shí)前者為NaN,后者為05、undefined本質(zhì)上是window的一個(gè)屬性,而null是一個(gè)對(duì)象;