1. 程式人生 > >在JavaScript中引用類型和值類型的區別

在JavaScript中引用類型和值類型的區別

AC 存儲方式 說明 添加 asc TE num style src

一、存儲方式不一樣

基本數據類型

變量存儲的是簡單的數據段,存儲的是具體的值,是輕量級的數據存儲方式

引用類型

引用類型的值,可以由多個值構成的對象,引用類型的變量存儲的是對象引用地址。引用類型是重量的數據存儲方式分配在堆內存頻繁創建對象有損性能。

引用類型(N多) Object、Array、Date、Function、……

二、動態屬性不一樣

1、引用類型能動態添加屬性

var person=new Object();

person.name="jack";

person.age=20;

console.log("姓名:%s,年齡:%d",person.name,person.age);

結果

技術分享圖片

說明

屬性動態添加成功

2、值類型不能添加

三、賦值的方式不一樣

1、值類型,拷貝變量的內容

值類型,拷貝變量的內容

var num=10;

var num2=num;//創建新的空間,拷貝num的值到num2

這個兩個變量的內容是互不影響的,num2的內容是num的一個副本。類似操作系統的復件

var num=10;

var num2=num;

num2=100;//並不會影響到num的值

console.log("num=%d num2=%d",num,num2);

結果

技術分享圖片

2、引用類型,拷貝引用地址

var person1=new Object();

person1.age=18;

var person2=person1;//拷貝引用地址,給變量person2,於是同時指向一個對象

person2.age=30;//事實上也是person1指向的那個對象

console.log("person1.age=%d person2.age=%d",person1.age,person2.age);

結果

技術分享圖片

說明

兩個變量都指向同一個對象,對象就是希望被變量引用的,引用的數量也是沒有限制的。

技術分享圖片

在JavaScript中引用類型和值類型的區別