JS引用類型

1.JS中的類型

  • 基本類型

    String

    Boolean

    Number

    undefined

    Null

    Symbol

  • 引用類型

    Object

對(duì)于基本類型,=代表的是值得拷貝,===代表的是值得比較。

對(duì)于引用類型,=代表的是引用地址的拷貝,===代表的是引用地址的比較。

2.幾個(gè)例子深入理解

  • 案例一
let a = 1;
let b = a;
a === b // true
b = 2;
a === 1 ; //true

基本類型Number,賦值為拷貝,當(dāng) b改變的時(shí)候不會(huì)影響到a

  • 案例二
let a = {};
let b = {};
let c = a ;
a === b //false
a === c //true

引用類型Object,比較的是引用地址,ab的引用地址明顯是不同的,所以他們不相等。

c得到了a的引用的地址,因此a===c

  • 案例三
let a = {name:'張三',info:{age:11,sex:'男'}};
let b = a;
b.info.age = 22;
a === b //true
a.info.age === 22 //true

因?yàn)?code>a和b指向同一個(gè)地址,所以b做修改的時(shí)候,a同樣修改了。

  • 案例四
let a = {name:'張三',info:{age:11,sex:'男'}};
let b = a ; //展開運(yùn)算符淺拷貝
a === b //false
a.name === b.name //true
a.info === b.info //true

因?yàn)檎归_運(yùn)算符是淺拷貝,所以兩個(gè)對(duì)象指向不同的地址,即a!==b。

但是淺拷貝畢竟是淺拷貝。

name是基本類型,拷貝的值,所以相同。

info為引用類型,拷貝的地址,也相同。

  • 案例五
let a = {name:'張三',info:{age:11,sex:'男'}};
let b = JSON.parse(JSON.stringify) ; //深拷貝
a === b //false
a.name === b.name //true
a.info === b.info //false
a.info.age === b.info.age//true

深拷貝了,其他的不用說。

因?yàn)樯羁截愡^了,info指向的就是各自的地址了,沒啥關(guān)系了。

但是基本類型該相同相同。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引用類型 引用類型變量保存的僅僅是一個(gè)指針,指針指向堆內(nèi)存中保存對(duì)象的位置。 所以基本類型復(fù)制的時(shí)候僅僅復(fù)制值,復(fù)...
    DeeJay_Y閱讀 636評(píng)論 0 0
  • 引用類型有哪些?非引用類型有哪些 基本類型值(數(shù)值、布爾值、null和undefined、string和symbo...
    DCbryant閱讀 422評(píng)論 0 0
  • 基本類型和引用類型# ECMAScript包含兩種不同的數(shù)據(jù)類型:基本類型值和引用類型值; 基本類型值指的是保存在...
    草鞋弟閱讀 554評(píng)論 0 0
  • 1.引用類型有哪些?非引用類型有哪些 引用類型是指那些保存在堆內(nèi)存中的對(duì)象。變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指...
    高進(jìn)哥哥閱讀 368評(píng)論 0 0
  • 一、函數(shù)的定義 定義函數(shù)有三種方式:函數(shù)聲明、函數(shù)表達(dá)式、Function構(gòu)造函數(shù)(不推薦) 函數(shù)聲明比如: fu...
    小妍妍說閱讀 721評(píng)論 0 0

友情鏈接更多精彩內(nèi)容