亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript中undefined、null與NaN的區(qū)別

 更新時(shí)間:2023年09月11日 16:01:25   作者:劉瓜皮Alison  
undefined、null和NaN都屬于javascript中的數(shù)據(jù)類(lèi)型,本文主要介紹了 JavaScript中undefined、null與NaN的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下

undefined、null與NaN的區(qū)別

1. 含義

undefined: 表示變量應(yīng)該有值,但未賦值。其類(lèi)型是undefined。

null: 表示定義了一個(gè)空對(duì)象 ( 內(nèi)存地址指向?yàn)榭?)。其類(lèi)型是object

NaN: 表示非數(shù)字 ( Not a number )。其類(lèi)型是number。( Q: 既然表示非數(shù)字,為何其類(lèi)型卻是number? )

2. typeof、==、===的區(qū)別

/** typeof */
typeof undefined;     // undefined
typeof null;          // object
typeof NaN;           // number
/** == */
undefined == null;   // true
undefined == NaN/** NaN跟NaN都不相等,跟其他值當(dāng)然更不相等啦 **/;  // false
NaN == null;         // false
/** === */
undefined === null;  // false
undefined === NaN;   // false
NaN === null;        // false

3. JSON.stringify、toString的區(qū)別

const obj = { property1: undefined, property2: null, property3: NaN };
const arr = [ undefined, null, NaN ];
/** JSON */
console.log(JSON.stringify(obj));   // {"[property2":null,"[property3":null,}
console.log(JSON.stringify(arr));   // [null,null,null]
/** toString */
console.log(obj.toString());        // [object Object]
console.log(arr.toString());        // [,,NaN]

JSON.stringify、Array.prototype.toString中的參數(shù)中有undefined、null、NaN時(shí),結(jié)果可能非我們預(yù)期。故使用JSON.stringfy深拷貝對(duì)象或使用Array.prototype.toString扁平化數(shù)組時(shí),應(yīng)評(píng)估其結(jié)果的影響。

用于處理 null、NaN 和undefined 的 18 個(gè) JavaScript 代碼片段

Null、NaN 和 undefined 是程序員在使用 JavaScript 時(shí)遇到的常見(jiàn)值。

有效處理這些值對(duì)于確保代碼的穩(wěn)定性和可靠性至關(guān)重要。

因此,在今天這篇文章中,我們將探討 18 個(gè) JavaScript 代碼片段,它們?yōu)樘幚?null、NaN 和未定義場(chǎng)景提供了便捷的解決方案。

這些代碼片段將幫助你通過(guò)有效處理這些值來(lái)編寫(xiě)更清晰、更優(yōu)雅的代碼。

1. 檢查是否為null:

要檢查變量是否為 null,可以使用嚴(yán)格相等運(yùn)算符 (===) 將其直接與 null 進(jìn)行比較:

if (variable === null) {
  // Code to handle null value
}

2. 檢查undefined:

同樣,你可以使用 typeof 運(yùn)算符檢查變量是否為undefined:

if (typeof variable === 'undefined') {
  // Code to handle undefined value
}

3. 檢查 NaN:

要檢查值是否為 NaN(非數(shù)字),可以使用 isNaN() 函數(shù):

if (isNaN(value)) {
  // Code to handle NaN value
}

4. 如果為 null 或undefined則默認(rèn)為某個(gè)值:

如果變量為 null 或undefined,您可以使用邏輯 OR 運(yùn)算符 (||) 提供默認(rèn)值:

const result = variable || defaultValue;

5. 如果為 NaN,則默認(rèn)為一個(gè)值:

如果值為 NaN,您可以使用 isNaN() 函數(shù)以及邏輯 OR 運(yùn)算符來(lái)提供默認(rèn)值:

const result = isNaN(value) ? defaultValue : value;

6. 將 null 或 undefined 轉(zhuǎn)換為空字符串:

要將 null 或undefined的值轉(zhuǎn)換為空字符串,可以使用邏輯 OR 運(yùn)算符和空字符串:

const result = variable || '';

7. 將 null 或 undefined 轉(zhuǎn)換為零:

如果需要將 null 或 undefined 轉(zhuǎn)換為零,可以使用邏輯 OR 運(yùn)算符和數(shù)字零:

const result = variable || 0;

8. 將 null 或 undefined 轉(zhuǎn)換為默認(rèn)對(duì)象:

要將 null 或 undefined 轉(zhuǎn)換為默認(rèn)對(duì)象,可以將邏輯 OR 運(yùn)算符與空對(duì)象文字結(jié)合使用:

const result = variable || {};

9. 檢查變量是否為 null 或undefined:

您可以使用邏輯 OR 運(yùn)算符組合 null 和未定義檢查:

if (variable === null || typeof variable === 'undefined') {
  // Code to handle null or undefined value
}

10. 檢查值是否為 null、undefined或 NaN:

將 null、未定義和 NaN 檢查與邏輯 OR 運(yùn)算符結(jié)合起來(lái):

if (variable === null || typeof variable === 'undefined' || isNaN(variable)) {
  // Code to handle null, undefined, or NaN value
}

11. unll或undefined的短路評(píng)估:

如果變量為 null 或undefined,請(qǐng)使用邏輯 AND 運(yùn)算符 (&&) 執(zhí)行短路計(jì)算:

const result = variable && someFunction();

12. 使用 NaN 進(jìn)行短路評(píng)估:

如果值為 NaN,則可以使用邏輯 AND 運(yùn)算符進(jìn)行短路評(píng)估:

const result = !isNaN(value) && someFunction();

13. 可選鏈接:

為了避免在訪問(wèn)可能為 null 或未定義的對(duì)象的屬性時(shí)出現(xiàn)錯(cuò)誤,您可以使用可選鏈接運(yùn)算符 (?.):

const result = object?.property;

14. 空合并運(yùn)算符:

空值合并運(yùn)算符 (??) 提供了一種簡(jiǎn)潔的方法來(lái)為 null 或未定義的變量提供默認(rèn)值:

const result = variable ?? defaultValue;

15. 將 null 或 undefined 轉(zhuǎn)換為布爾值:

要將 null 或 undefined 轉(zhuǎn)換為布爾值,可以使用邏輯 NOT 運(yùn)算符 (!):

const result = !!variable;

16. 將 NaN 轉(zhuǎn)換為布爾值:

要將 NaN 轉(zhuǎn)換為布爾值,可以使用 isNaN() 函數(shù)和邏輯 NOT 運(yùn)算符:

const result = !isNaN(value);

17. 處理函數(shù)參數(shù)中的 null 或 undefined:

您可以使用默認(rèn)參數(shù)值來(lái)處理函數(shù)參數(shù)中的 null 或undefined:

function myFunction(param = defaultValue) {
  // Code that uses the parameter
}

18. 從數(shù)組中刪除 null 或undefined的值:

要從數(shù)組中刪除 null 或undefined的值,可以使用 filter() 方法:

const newArray = originalArray.filter((value) => value !== null && typeof value !== 'undefined');

結(jié)論:

以上就是我今天與您分享的18 個(gè) JavaScript 代碼片段,希望這些代碼片段對(duì)您有用,因?yàn)?,這些代碼片段可以幫助您有效地處理代碼中的 null、NaN 和undefined的使用場(chǎng)景。

這些代碼片段,無(wú)論您需要檢查這些值、提供默認(rèn)值還是將它們轉(zhuǎn)換為不同的類(lèi)型,它們都將幫助您編寫(xiě)更清晰、更優(yōu)雅的 JavaScript 代碼。

到此這篇關(guān)于 JavaScript中undefined、null與NaN的區(qū)別的文章就介紹到這了,更多相關(guān) JavaScript undefined null NaN內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS co 函數(shù)庫(kù)的含義和用法實(shí)例總結(jié)

    JS co 函數(shù)庫(kù)的含義和用法實(shí)例總結(jié)

    這篇文章主要介紹了JS co 函數(shù)庫(kù)的含義和用法,結(jié)合實(shí)例形式總結(jié)分析了JS co 函數(shù)庫(kù)的基本含義、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • javascript中異常處理案例(推薦)

    javascript中異常處理案例(推薦)

    下面小編就為大家?guī)?lái)一篇javascript中異常處理案例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • JS實(shí)現(xiàn)圖片拖拽交換效果

    JS實(shí)現(xiàn)圖片拖拽交換效果

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)圖片拖拽交換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • javascript實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼案例

    javascript實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼案例

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解webpack 熱更新優(yōu)化

    詳解webpack 熱更新優(yōu)化

    這篇文章主要介紹了詳解webpack 熱更新優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見(jiàn)排序(Sort)算法詳解

    JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見(jiàn)排序(Sort)算法詳解

    這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見(jiàn)排序(Sort)算法,結(jié)合實(shí)例形式詳細(xì)分析了js常見(jiàn)排序算法中的冒泡排序、選擇排序、插入排序、希爾排序、歸并排序、快速排序等算法相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2019-08-08
  • JS 添加千分位與去掉千分位的示例

    JS 添加千分位與去掉千分位的示例

    本文為大家詳細(xì)介紹下使用JS添加千分位以及去掉千分位的實(shí)現(xiàn)代碼,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助
    2013-07-07
  • JavaScript類(lèi)型系統(tǒng)之基本數(shù)據(jù)類(lèi)型與包裝類(lèi)型

    JavaScript類(lèi)型系統(tǒng)之基本數(shù)據(jù)類(lèi)型與包裝類(lèi)型

    javascript的數(shù)據(jù)類(lèi)型可以分為兩種:原始類(lèi)型和引用類(lèi)型,在此文給大家提到。本文主要給大家介紹javascript類(lèi)型系統(tǒng)之基本數(shù)據(jù)類(lèi)型與包裝類(lèi)型,涉及到j(luò)s 基本類(lèi)型 包裝類(lèi)相關(guān)知識(shí),本文介紹的詳細(xì),具有參考借鑒價(jià)值,對(duì)本文感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • js tr控制下面的tbody隱藏和顯示

    js tr控制下面的tbody隱藏和顯示

    這個(gè)問(wèn)題弄了我?guī)滋鞗](méi)心思寫(xiě)程序,問(wèn)了論壇很多網(wǎng)友才搞定的。
    2008-07-07
  • Js冒泡事件詳解及阻止示例

    Js冒泡事件詳解及阻止示例

    如果某元素定義了事件A,如click事件,如果觸發(fā)了事件之后,沒(méi)有阻止冒泡事件,那么事件將向父級(jí)元素傳播
    2014-03-03

最新評(píng)論