JS中變量的存儲


JS中的變量是保存在棧內存中的

  • 基本數據類型的值直接在內存中存儲;
  • 值與值之間是獨立存在的,修改一個變量不會影響其他變量;
var a=20;
var b=a;
a++;

  • 對象(引用數據類型)是保存到內存中的,每創建一個新的對象,就會在堆內存中開辟一個新的空間;
  • 而變量保存的是對象的內存地址(對象的引用),如果兩個變量保存的是同一個對象引用,當一個變量修改屬性是,另一個也會受到影響;
var obj1=new Object();
obj1.name="mike";
var obj2=obj1;
obj2.name=“jack”;
console.log(obj1.name);//jack

  •  當清空一個變量的值時,只是斷開該變量與對象的聯系,另一個對象並不受影響
obj2=null

  • 當比較兩個基本數據類型的值時,就是比較值;
  • 當比較兩個引用數據類型時,比較的是對象的內存地址;
var a=10;
var b=10;
console.log(a==b);//true
var obj1=new Object();
var obj2=new Object();
console.log(obj1==obj2);//false

 問題:

數組乃引用數據類型,因此修改b的值,a也會受影響

var a=[1,2,3];
var b=a;
b[0]=10;
console.log(a[0]);//10;

如何解決該問題?

深拷貝,該部分會單獨寫一篇文章講述。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM