關(guān)于JS中的undefined與null詳解
undefined 是一個(gè)表示未定義或未賦值的原始值。它在以下情況下使用:
- 變量聲明了但未初始化時(shí),默認(rèn)為
undefined。
let x; console.log(x); // undefined
- 訪問(wèn)對(duì)象屬性或數(shù)組元素時(shí),如果該屬性或元素不存在,則返回
undefined。
let obj = { name: "John", age: 30 };
console.log(obj.address); // undefined
let arr = [1, 2, 3];
console.log(arr[3]); //undefined- 函數(shù)沒(méi)有明確返回值時(shí),默認(rèn)返回
undefined。
function foo() {
// 沒(méi)有明確返回值
}
console.log(foo()); // undefined相比之下,null 是一個(gè)表示空值或沒(méi)有對(duì)象引用的特殊值。它通常由程序員顯式賦予變量或?qū)傩?,表示該值為空。例如?/p>
let x = null; console.log(x); // null
null 主要用于以下情況:
- 初始化一個(gè)變量,以便稍后將其設(shè)置為對(duì)象。
let obj = null; // 初始化為 null
obj = { name: "John", age: 30 }; // 后續(xù)設(shè)置為對(duì)象- 表示函數(shù)的參數(shù)不具有對(duì)象引用。
function foo(arg) {
if (arg === null) {
console.log("參數(shù)為空");
} else {
console.log("參數(shù)不為空");
}
}
foo(null); // 參數(shù)為空
foo("Hello"); // 參數(shù)不為空需要注意的是,undefined 和 null 是不同的類(lèi)型。undefined 是一個(gè)類(lèi)型為 undefined 的值,而 null 是一個(gè)類(lèi)型為 object 的值。然而,在相等性比較(== 或 ===)中,它們是相等的,因?yàn)樗鼈兌急硎局嗤暮x——空值。
console.log(undefined == null); // true console.log(undefined === null); // false
在編程中,通常使用 undefined 來(lái)表示未定義或未賦值的狀態(tài),使用 null 來(lái)表示有意地將一個(gè)值設(shè)置為空。
當(dāng)涉及到undefined和null的更多細(xì)節(jié)時(shí),還有一些要注意的事項(xiàng):
類(lèi)型檢查:
- 使用
typeof操作符檢查undefined值時(shí),會(huì)返回字符串"undefined"。 - 使用
typeof操作符檢查null值時(shí),會(huì)返回字符串"object"。這是一個(gè)歷史遺留問(wèn)題,null被錯(cuò)誤地標(biāo)識(shí)為對(duì)象類(lèi)型。
- 使用
let x; console.log(typeof x); // "undefined" let y = null; console.log(typeof y); // "object"
默認(rèn)參數(shù)值:
- 當(dāng)函數(shù)的參數(shù)沒(méi)有傳遞或傳遞的值為
undefined時(shí),可以使用默認(rèn)參數(shù)值。 - 當(dāng)函數(shù)的參數(shù)傳遞
null值時(shí),會(huì)將null視為有效值,而不會(huì)觸發(fā)默認(rèn)參數(shù)值。
function foo(x = "default") {
console.log(x);
}
foo(); // "default"
foo(undefined); // "default"
foo(null); // null安全導(dǎo)航操作符(Optional Chaining):
- 使用安全導(dǎo)航操作符(
?.)可以避免訪問(wèn)對(duì)象屬性或調(diào)用方法時(shí)出現(xiàn)undefined或null的錯(cuò)誤。如果屬性或方法不存在,則會(huì)返回undefined。
let obj = { name: "John", address: { city: "New York" } };
console.log(obj.address?.city); // "New York"
console.log(obj.address?.zipCode); // undefined變量賦值:
- 在變量賦值時(shí),
undefined被視為一個(gè)變量可以接收的有效值。 - 而
null被視為一個(gè)特殊值,通常用于表示空或未定義的狀態(tài)。
let x = undefined; console.log(x); // undefined let y = null; console.log(y); // null
以上就是關(guān)于JS中的undefined與null詳解的詳細(xì)內(nèi)容,更多關(guān)于JS undefined與null的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript中操作Mysql數(shù)據(jù)庫(kù)實(shí)例
這篇文章主要介紹了JavaScript中操作Mysql數(shù)據(jù)庫(kù)實(shí)例,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-04-04
echarts幾個(gè)公司內(nèi)部數(shù)據(jù)可視化圖表必收藏
最近公司有一個(gè)需求,要做一個(gè)數(shù)據(jù)可視化的頁(yè)面,所有的圖表都在下面,做這些都是本人自己寫(xiě)的,全部都是真是的項(xiàng)目中的代碼,包含有柱狀圖、折線圖、水球圖以及散點(diǎn)圖,這里直接打出來(lái)給大家練手,希望大家多多支持,如果這篇文章對(duì)您有用的話必須收藏2022-08-08
JavaScript實(shí)現(xiàn)移動(dòng)端滑動(dòng)選擇日期功能
這篇文章主要介紹了JavaScript實(shí)現(xiàn)滑動(dòng)選擇日期功能,基于sui-mobile的移動(dòng)端實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2016-06-06
javascript模擬的Ping效果代碼 (Web Ping)
JS雖然發(fā)送不了真正Ping的ICMP數(shù)據(jù)包,但Ping的本質(zhì)仍然是請(qǐng)求/回復(fù)的時(shí)間差,HTTP自然可以實(shí)現(xiàn)此功能.2011-03-03
詳解微信小程序工程化探索之webpack實(shí)戰(zhàn)
這篇文章主要介紹了詳解微信小程序工程化探索之webpack實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

