欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)識對象沒有值,一個(gè)聲明但是沒有賦值的對象默認(rèn)就是null,這個(gè)點(diǎn)對于Java老手來說實(shí)在是熟悉不過了;但是Java老手你可指定js中“空”對象是用啥表示嗎?

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

1、typeof操作符

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

表達(dá)式返回值說明
typeof undefined"undefined"未定義的值
typeof true"boolean"布爾值
typeof 42"number"所有數(shù)字類型
typeof "text""string"字符串
typeof {a:1}"object"對象、數(shù)組、null
typeof function(){}"function"函數(shù)
typeof Symbol()"symbol"ES6新增符號類型
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é)果:

再來看看一些用法:

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

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

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

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

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

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

2、null

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

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

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

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

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

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

3、undefined

在 JavaScript 中, undefined 是一個(gè)沒有設(shè)置值的變量。typeof 一個(gè)沒有值的變量會返回 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 用于對象,undefined 用于變量、屬性和方法。對象只有被定義才有可能為 null,否則為 undefined。

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

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

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

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

1、定義

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

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

當(dāng)使用完一個(gè)比較大的對象時(shí),需要對其進(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è)對象。

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

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

4、延伸——垃圾回收站

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

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

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

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

1. 使用Undefined

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

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

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

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

2. 使用Null

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

var obj = {}
obj = null

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

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

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

總結(jié) 

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

相關(guān)文章

  • js與jQuery 獲取父窗、子窗的iframe

    js與jQuery 獲取父窗、子窗的iframe

    本篇文章介紹了js與jQuery 獲取父窗、子窗的iframe。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • JS轉(zhuǎn)換金額大寫方法詳細(xì)例子

    JS轉(zhuǎn)換金額大寫方法詳細(xì)例子

    在處理財(cái)務(wù)賬款類需求時(shí)需要將轉(zhuǎn)賬金額寫成大寫的,下面這篇文章主要給大家介紹了關(guān)于JS轉(zhuǎn)換金額大寫方法的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • JS實(shí)現(xiàn)文字向下滾動(dòng)完整實(shí)例

    JS實(shí)現(xiàn)文字向下滾動(dòng)完整實(shí)例

    這篇文章主要介紹了JS實(shí)現(xiàn)文字向下滾動(dòng)的方法,以一個(gè)完整實(shí)例形式詳細(xì)分析了html頁面布局、css樣式及對應(yīng)的js滾動(dòng)功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • Javascript中this綁定的3種方法與比較

    Javascript中this綁定的3種方法與比較

    大家都知道JS是一門動(dòng)態(tài)語言,與傳統(tǒng)的c和c++最大的區(qū)別就是js是在運(yùn)行時(shí)動(dòng)態(tài)檢測值的類型和變化。this是js中的一個(gè)關(guān)鍵字,它代表當(dāng)前作用域的上下文環(huán)境,而且隨著上下文的改變而動(dòng)態(tài)變化。這篇文章我們將詳細(xì)介紹Javascript中綁定this的三種方法與簡單的比較。
    2016-10-10
  • uni-app應(yīng)用配置manifest.json最全最詳細(xì)配置

    uni-app應(yīng)用配置manifest.json最全最詳細(xì)配置

    這篇文章主要給大家介紹了關(guān)于uni-app應(yīng)用配置manifest.json最全最詳細(xì)配置,manifest.json文件是UniApp開發(fā)中用來配置應(yīng)用信息的重要文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • IE6/7/8中Option元素未設(shè)value時(shí)Select將獲取空字符串

    IE6/7/8中Option元素未設(shè)value時(shí)Select將獲取空字符串

    可以看到當(dāng)忘記寫option的value時(shí)這些現(xiàn)代瀏覽器都會盡量返回正確的(客戶端程序員想要的)結(jié)果value,其容錯(cuò)性比IE6/7/8做的更好。
    2011-04-04
  • LayUI數(shù)據(jù)接口返回實(shí)體封裝的例子

    LayUI數(shù)據(jù)接口返回實(shí)體封裝的例子

    今天小編就為大家分享一篇LayUI數(shù)據(jù)接口返回實(shí)體封裝的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js 動(dòng)態(tài)選中下拉框

    js 動(dòng)態(tài)選中下拉框

    js 動(dòng)態(tài)選中下拉框
    2009-11-11
  • uniapp實(shí)現(xiàn)全局設(shè)置字體大小(小中大的字體切換)

    uniapp實(shí)現(xiàn)全局設(shè)置字體大小(小中大的字體切換)

    隨著UniApp的流行,越來越多的開發(fā)者選擇使用它來構(gòu)建跨平臺應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)全局設(shè)置字體大小(小中大的字體切換)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • JS獲取文本框,下拉框,單選框的值的簡單實(shí)例

    JS獲取文本框,下拉框,單選框的值的簡單實(shí)例

    本篇文章主要是對JS獲取文本框,下拉框,單選框值的簡單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02

最新評論