變量

基本類型和引用類型

ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。
基本數(shù)據(jù)類型有:undefined,null,boolean,string,number;這五種基本類型是按值訪問的,因?yàn)榭梢圆僮鞅4嬖谧兞恐械膶?shí)際的值。
引用類型為Object,引用類型的值是保存在內(nèi)存中的對(duì)象。

基本數(shù)據(jù)類型和引用類型的區(qū)別有以下幾種:

1、動(dòng)態(tài)的屬性

引用類型可以在上面保存或刪改需要的屬性,例如:

var obj = {}
obj.name = '小明'
console.log(obj.name) // '小明'

基礎(chǔ)數(shù)據(jù)類型就是一個(gè)單純的值,無(wú)法操作其屬性,例如:

var str = '小明'
str.age = 18
console.log(str.age) // undefined

注意,這里并不是沒有為str添加age屬性,而是JavaScript在為str添加屬性之后又馬上刪除了這個(gè)屬性(具體可以看高程的5.6節(jié)—基本包裝類型)

2、復(fù)制變量值

基本類型值在復(fù)制的時(shí)候,會(huì)在變量對(duì)象上直接創(chuàng)建一個(gè)新值,然把該值復(fù)制到為新變量分配的位置上,例如:

var a = 10
var b = a
a = 20
console.log(a) // 20
console.log(b) // 10

基本類型值被復(fù)制后,兩個(gè)值是獨(dú)立的,相互之間不會(huì)干擾


上例圖解

引用類型值在復(fù)制的時(shí)候,和基本類型值一樣,也是在變量對(duì)象上直接創(chuàng)建一個(gè)新值,然把該值復(fù)制到為新變量分配的位置上,但區(qū)別在于,引用類型值復(fù)制的并不是一個(gè)具體的值,而是一個(gè)指針,指向存儲(chǔ)在堆中的一個(gè)對(duì)象。所以在復(fù)制結(jié)束后,兩個(gè)變量的值實(shí)際上就是同一個(gè)東西。例如:

var obj = {name: '小明'}
var obj2 = obj
var obj3 = {name: '小明'}
console.log(obj2) // {name: '小明'}
console.log(obj === obj2) // true
console.log(obj === obj3) // false

1、在復(fù)制前,obj的值是一個(gè)內(nèi)存地址,指向內(nèi)存中存在的一個(gè)object;
2、使用obj2復(fù)制了obj之后,并不是新生成一個(gè)和obj一樣的對(duì)象,而是復(fù)制了obj的內(nèi)存地址,所以obj和obj2是指向同一塊內(nèi)存區(qū)域;
3、當(dāng)創(chuàng)建一個(gè)和obj內(nèi)容一樣的obj3的時(shí)候,javascript為obj3創(chuàng)建出一塊新的內(nèi)存區(qū)域,obj3就指向這個(gè)新的內(nèi)存區(qū)域;


上例圖解一
最后編輯于
?著作權(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)容

  • 本章內(nèi)容 理解基本類型和引用類型的值 理解執(zhí)行環(huán)境 理解垃圾收集 由于不存在定義某個(gè)變量必須要保存何種數(shù)據(jù)類型值的...
    悶油瓶小張閱讀 368評(píng)論 0 0
  • 基本類型值和引用類型的值 關(guān)鍵詞:引用類型的值(對(duì)象),基本類型的值(原始值),按值訪問,按引用訪問 ECMASc...
    梁海杰_IRV閱讀 320評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,824評(píng)論 18 399
  • 1.1 基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值?;?..
    Jackandjohn閱讀 371評(píng)論 0 0
  • 六一兒童節(jié)晩上寶2鬧病,肚子疼,吃了藥觀察了半天沒好轉(zhuǎn),2號(hào)下午了去醫(yī)院 。抽血、B超 ,所幸無(wú)大礙。3號(hào)...
    suza閱讀 495評(píng)論 0 0

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