JavaScript中Undefined類型的使用
在 JavaScript 中,Undefined類型是一個(gè)特殊且基礎(chǔ)的數(shù)據(jù)類型,它表示一個(gè)變量最原始的自然狀態(tài)——"未定義"。
Undefined類型只有一個(gè)值,就是 undefined。
當(dāng)使用var或let聲明了變量但沒(méi)有初始化時(shí),就相當(dāng)于給變量賦予了undefined值。
let message; console.log(message == undefined); // true //等于 let message = undefined ; //默認(rèn)情況下,任何未經(jīng)初始化的變量都會(huì)取得undefined值,因此,不必顯式的初始化為undefined。 console.log(message == undefined); // true
可以通過(guò) typeof操作符來(lái)確認(rèn)一個(gè)變量是否為 Undefined類型。無(wú)論是聲明還是未聲明,typeof返回的都是字符串"undefined"。
// 變量被聲明了,但未初始化,值為 undefined
let message;
console.log(message); // "undefined"
console.log(age); // 沒(méi)有聲明變量,報(bào)錯(cuò)
console.log(typeof message); // "undefined"
console.log(typeof age); // "undefined"
//訪問(wèn)對(duì)象不存在的屬性
let obj = {};
console.log(obj.name); // undefined
//函數(shù)沒(méi)有返回值
function foo() {}
console.log(foo()); // undefined
//函數(shù)參數(shù)未傳遞
function bar(param) {
console.log(param);
}
bar(); // undefined
//使用 void 操作符
console.log(void(0)); // undefined
使用嚴(yán)格相等進(jìn)行檢查:使用 ===來(lái)嚴(yán)格判斷一個(gè)值是否為 undefined,避免使用 ==(因?yàn)?undefined == null為 true)。
if (myVar === undefined) { /* 處理 undefined */ }
安全地訪問(wèn)對(duì)象屬性(可選鏈操作符 ?.):當(dāng)訪問(wèn)一個(gè)可能不存在的深層嵌套屬性時(shí),可選鏈操作符可以避免拋出錯(cuò)誤。
let city = user?.address?.city; // 如果 address 不存在,則 city 為 undefined,而非報(bào)錯(cuò)。
提供默認(rèn)值(空值合并運(yùn)算符 ??):當(dāng)變量為 undefined或 null時(shí),空值合并運(yùn)算符可以提供一個(gè)默認(rèn)值。它與 ||不同,不會(huì)過(guò)濾掉其他假值(如 0, "")。
let displayName = username ?? "匿名用戶"; // 僅在 username 是 null 或 undefined 時(shí)使用默認(rèn)值。
安全的類型檢查:如果要檢查一個(gè)可能未聲明的變量(直接使用會(huì)報(bào)引用錯(cuò)誤),使用 typeof是最安全的方式。
if (typeof someUndeclaredVar === 'undefined') {
// 不會(huì)報(bào)錯(cuò),即使 someUndeclaredVar 從未被聲明。
}
到此這篇關(guān)于JavaScript中Undefined類型的使用的文章就介紹到這了,更多相關(guān)JavaScript Undefined類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決layer.msg 不居中 ifram中的問(wèn)題
今天小編就為大家分享一篇解決layer.msg 不居中 ifram中的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
Javascript的promise,async和await的區(qū)別詳解
這篇文章主要為大家詳細(xì)介紹了Javascript的promise,async和await的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
js實(shí)現(xiàn)拖動(dòng)模態(tài)框
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖動(dòng)模態(tài)框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
JavaScript 事件冒泡應(yīng)用實(shí)例分析
在一些傳統(tǒng)的小型WEB應(yīng)用開(kāi)發(fā)過(guò)程中,JavaScript通常只是拿來(lái)做表單驗(yàn)證而以,所以你很少會(huì)遇到因?yàn)镴avaScript事件冒泡而影響功能的實(shí)現(xiàn)情況,又或者事件冒泡對(duì)最終實(shí)現(xiàn)效果影響不大,可忽略。2010-01-01
JavaScript實(shí)現(xiàn)H5接金幣功能(實(shí)例代碼)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)H5接金幣功能,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
比較精簡(jiǎn)的Javascript拖動(dòng)效果函數(shù)代碼
比較精簡(jiǎn)的Javascript拖動(dòng)效果函數(shù)代碼...2007-07-07
用innerhtml提高頁(yè)面打開(kāi)速度的方法
這篇文章介紹了用innerhtml提高頁(yè)面打開(kāi)速度的方法,有需要的朋友可以參考一下2013-08-08

