JavaScript變量分為兩種類型:一種是基本類型,一種是引用類型。基本類型就是我們常見的五種類型:undefined、boolean、number、string、null這五種。不屬于這五種之內的就是引用類型。
基本類型保存在棧區即棧內存,引用類型保存在堆區即堆內存。
這里我們先舉個例子:
運行結果
我們看到,給arr2尾部添加一個元素4,結果arr1這個數組尾部也添加了一個4。為什么會出現這種情況,其實很簡單,這就是我們所說的引用。
對于基本類型:
var a ?= 10;
var b = a;
在內存中的棧內形式
對于引用類型:
我們看到對于引用而言他們將名字和地址存到棧內存中,堆內存中保存的是對象,我們隊obj1或者obj2都會導致對象Object改變。他們只是指向了這個對象并不想基本類型變量那種,再次創建一個棧內存,不會相互影響。