1. 程式人生 > >JS--變數及深淺拷貝

JS--變數及深淺拷貝

JS變數分為基本型別和引用型別

 

 

基本型別資料包括Number, String, Boolean, Null, Undefined五種型別;

引用資料型別包括Array, Date, RegExp, Function等, 統稱為Object型別。

 

JS變數的儲存方式

基本型別變數儲存在記憶體的棧中,棧內分別儲存著變數的識別符號和變數的值。

var num1 = 3;
var num2 = 5;

 

 

引用型別變數儲存在記憶體的堆中,儲存結構如下

var person = {
    name: 
"tom", age: 16, sayName: function(){ console.log(this.name); } }

 

 

 

基本與引用變數的區別

變數的訪問方式不同

從一個變數向另一個變數複製基本型別值和引用型別值時,存在不同

訪問方式

基本變數:

  按值訪問,即通過對儲存在變數中的值進行操作

引用變數:

  按引用訪問,即通過變數的引用對變數進行操作,不能直接訪問引用變數的記憶體空間

 

從一個變數向另一個變數複製基本型別值和引用型別值時

基本變數的複製

  

var num1 = 3;
var num2 = num1;
console.log(num1 === num2);
num2 = 5;
console.log(num1, num2);

  

  

num2變數值的改變並不會影響變數num1的值,num2中的3只是num1中的3的一個副本,兩者相互獨立,互不影響。

其複製及賦值過程如下圖所示:

 

 引用變數的複製