最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中null與undefined的區(qū)別總結(jié)

 更新時(shí)間:2025年09月15日 10:28:46   作者:昉鈺  
在JavaScript中,null和undefined是兩個(gè)特殊的值,這篇文章主要介紹了JavaScript中null與undefined區(qū)別的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

寫Java的時(shí)候我們就是用null來標(biāo)識(shí)對(duì)象沒有值,一個(gè)聲明但是沒有賦值的對(duì)象默認(rèn)就是null,這個(gè)點(diǎn)對(duì)于Java老手來說實(shí)在是熟悉不過了;但是Java老手你可指定js中“空”對(duì)象是用啥表示嗎?

我問了這個(gè)問題,就表示在js中表示空對(duì)對(duì)象與Java是不太一樣的,除了null還有一個(gè)undefined可以表示空對(duì)象,今天我們就來看看在js中這兩兄弟有啥不一樣的。

1、typeof操作符

首先來看看typeof操作符,這個(gè)東西會(huì)返回所檢測(cè)變量的類型,請(qǐng)看下面表格:

表達(dá)式返回值說明
typeof undefined"undefined"未定義的值
typeof true"boolean"布爾值
typeof 42"number"所有數(shù)字類型
typeof "text""string"字符串
typeof {a:1}"object"對(duì)象、數(shù)組、null
typeof function(){}"function"函數(shù)
typeof Symbol()"symbol"ES6新增符號(hào)類型
typeof BigInt(10)"bigint"ES2020新增大整數(shù)類型

來些實(shí)例:

console.log(typeof 'Hello')                //string
console.log(typeof 112.33)                 //number
console.log(typeof {a: '1'})               //object
console.log(typeof [1, 2, 3,4 ])           //object
console.log(Array.isArray([1, 2, 3, 4]))   //true
console.log([1, 2, 3, 4] instanceof Array) //true

var x = new Number
console.log(typeof x)                      //object
console.log(x instanceof Number)           //true
console.log(x instanceof String)           //false

如下是運(yùn)行結(jié)果:

再來看看一些用法:

  • 檢測(cè)未定義變量:
if (typeof variable === "undefined") {...}
  • 檢測(cè)函數(shù)是否存在:
if (typeof myFunction === "function") {...}
  • 注意數(shù)組和null的特殊情況:
// 正確檢測(cè)數(shù)組
if (Array.isArray(myVar)) {...}

// 正確檢測(cè)null
if (myVar === null) {...}

有一些特殊情況需要注意:

  • typeof null 會(huì)返回 "object",這是一個(gè)歷史遺留的問題,實(shí)際上 null 是一個(gè)空或者不存在的值,不是一個(gè)對(duì)象。

  • typeof NaN 會(huì)返回 "number",這是因?yàn)?NaN 是一個(gè)特殊的數(shù)值類型,表示 Not a Number(不是一個(gè)數(shù)字)。

  • typeof [] 會(huì)返回 "object",這是因?yàn)閿?shù)組是一種特殊的對(duì)象類型,它有一個(gè) length 屬性和一些方法來操作元素。

2、null

在 JavaScript 中 null 表示 "什么都沒有"。

null是一個(gè)只有一個(gè)值的特殊類型,表示一個(gè)空對(duì)象引用,typeof一個(gè)null的變量會(huì)返回object。

你可以設(shè)置為 null 來清空對(duì)象:

var person = null;           // 值為 null(空), 但類型為對(duì)象

你也可以設(shè)置為 undefined 來清空對(duì)象:

var person = undefined;     // 值為 undefined, 類型為 undefined

3、undefined

在 JavaScript 中, undefined 是一個(gè)沒有設(shè)置值的變量。typeof 一個(gè)沒有值的變量會(huì)返回 undefined。

var person;                  // 值為 undefined(空), 類型是undefined

任何變量都可以通過設(shè)置值為 undefined 來清空。 類型為 undefined.

person = undefined;          // 值為 undefined, 類型是undefined

4、undefined 和 null 的區(qū)別

null 和 undefined 的值相等,但類型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

5、總結(jié)一下

在 JavaScript 中, null 用于對(duì)象,undefined 用于變量、屬性和方法。對(duì)象只有被定義才有可能為 null,否則為 undefined。

如果我們想測(cè)試對(duì)象是否存在,在對(duì)象還沒定義時(shí)將會(huì)拋出一個(gè)錯(cuò)誤。錯(cuò)誤的使用方式:

if (myObj !== null && typeof myObj !== "undefined") 

正確的方式是我們需要先使用 typeof 來檢測(cè)對(duì)象是否已定義:

if (typeof myObj !== "undefined" && myObj !== null) 

1、定義

  •  undefined:是所有沒有賦值變量的默認(rèn)值,自動(dòng)賦值。
  •  null:主動(dòng)釋放一個(gè)變量引用的對(duì)象,表示一個(gè)變量不再指向任何對(duì)象地址。

2、何時(shí)使用null?

當(dāng)使用完一個(gè)比較大的對(duì)象時(shí),需要對(duì)其進(jìn)行釋放內(nèi)存時(shí),設(shè)置為 null。

3、null 與 undefined 的異同點(diǎn)是什么呢?

共同點(diǎn):都是原始類型,保存在棧中變量本地。

不同點(diǎn):

(1)undefined——表示變量聲明過但并未賦過值。

它是所有未賦值變量默認(rèn)值,例如:

var a;    // a 自動(dòng)被賦值為 undefined

(2)null——表示一個(gè)變量將來可能指向一個(gè)對(duì)象。

一般用于主動(dòng)釋放指向?qū)ο蟮囊?,例如?/p>

var emps = ['ss','nn'];
emps = null;     // 釋放指向數(shù)組的引用

4、延伸——垃圾回收站

它是專門釋放對(duì)象內(nèi)存的一個(gè)程序。

  •  在底層,后臺(tái)伴隨當(dāng)前程序同時(shí)運(yùn)行;引擎會(huì)定時(shí)自動(dòng)調(diào)用垃圾回收期;
  •  總有一個(gè)對(duì)象不再被任何變量引用時(shí),才釋放。

附:建議在何時(shí)使用null或undefined

在JavaScript中,Null和Undefined都有其特殊用法和含義,取決于具體使用場(chǎng)景,我們可以根據(jù)以下建議來決定何時(shí)使用Null或Undefined:

1. 使用Undefined

當(dāng)需要表示一個(gè)變量或?qū)傩陨形幢毁x值或者定義時(shí),使用Undefined是非常合適的。例如,在聲明變量但不初始化的情況下,變量的默認(rèn)值為Undefined。

var a;
console.log(a); // undefined

另外,在訪問對(duì)象的不存在屬性時(shí),也會(huì)得到Undefined值:

var person = {}
console.log(person.age) // undefined

2. 使用Null

當(dāng)需要表示一個(gè)變量尚未被初始化或者引用的對(duì)象不存在時(shí),使用Null是非常合適的。例如,在釋放某個(gè)對(duì)象的引用時(shí),可以使用Null:

var obj = {}
obj = null

另外,有些API方法可能會(huì)返回Null,例如當(dāng)查詢某個(gè)元素不存在時(shí),可以得到Null值:

var el = document.getElementById('not-exist')
console.log(el) // null

總的來說,當(dāng)我們需要判斷變量或?qū)傩允欠褚驯怀跏蓟蛘咭玫膶?duì)象是否存在時(shí),可以使用Undefined或Null來表示。需要注意的是,在使用Undefined或Null時(shí),要考慮其在類型、屬性值、比較運(yùn)算符等方面的特殊性,避免由此引起的問題。

總結(jié) 

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

相關(guān)文章

  • 微信小程序之?dāng)?shù)據(jù)綁定原理解析

    微信小程序之?dāng)?shù)據(jù)綁定原理解析

    這篇文章主要介紹了微信小程序之?dāng)?shù)據(jù)綁定原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • javascript測(cè)試題練習(xí)代碼

    javascript測(cè)試題練習(xí)代碼

    javascript測(cè)試題練習(xí)代碼,需要的朋友可以參考下
    2012-10-10
  • 詳解maxlength屬性在textarea里奇怪的表現(xiàn)

    詳解maxlength屬性在textarea里奇怪的表現(xiàn)

    這篇文章主要介紹了maxlength屬性在textarea里奇怪的表現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Bootstrap 過渡效果Transition 模態(tài)框(Modal)

    Bootstrap 過渡效果Transition 模態(tài)框(Modal)

    這篇文章主要介紹了Bootstrap 過渡效果Transition 模態(tài)框(Modal),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 深入理解JavaScript系列(9) 根本沒有“JSON對(duì)象”這回事!

    深入理解JavaScript系列(9) 根本沒有“JSON對(duì)象”這回事!

    寫這篇文章的目的是經(jīng)??吹介_發(fā)人員說:把字符串轉(zhuǎn)化為JSON對(duì)象,把JSON對(duì)象轉(zhuǎn)化成字符串等類似的話題,所以把之前收藏的一篇老外的文章整理翻譯了一下,供大家討論,如有錯(cuò)誤,請(qǐng)大家指出,多謝
    2012-01-01
  • 最新評(píng)論

    通河县| 大埔县| 孟津县| 子洲县| 河西区| 蓬溪县| 古丈县| 瓦房店市| 高邑县| 吉安市| 六枝特区| 东宁县| 罗山县| 阿巴嘎旗| 云浮市| 马鞍山市| 中方县| 耒阳市| 黔西| 镇沅| 镇宁| 永宁县| 武山县| 抚州市| 望城县| 盐池县| 凯里市| 云浮市| 乐安县| 锡林郭勒盟| 浮山县| 云和县| 土默特右旗| 荣昌县| 孟津县| 平遥县| 曲水县| 苍南县| 鄯善县| 苍溪县| 化德县|