基本數據類型和引用數據類型(堆和棧內存)


 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 基本數據類型
10              *     String Number Boolean Null Undefined
11              * 
12              * 引用數據類型
13              *     Object
14              * 
15              * JS中的變量都是保存到棧內存中的,
16              *         基本數據類型的值直接在棧內存中存儲,
17              *         值與值之間是獨立存在,修改一個變量不會影響其他的變量
18              * 
19              *         對象是保存到堆內存中的,每創建一個新的對象,就會在堆內存中開辟出一個新的空間,
20              *         而變量保存的是對象的內存地址(對象的引用),如果兩個變量保存的是同一個對象引用,
21              *         當一個通過一個變量修改屬性時,另一個也會受到影響
22              */
23             
24             var a = 123;
25             var b = a;
26             a++;
27             
28             /*console.log("a = "+a);
29             console.log("b = "+b);*/
30             
31             var obj = new Object();
32             obj.name = "孫悟空";
33             
34             var obj2 = obj;
35             
36             //修改obj的name屬性
37             obj.name = "豬八戒";
38             
39             
40             
41             /*console.log(obj.name);
42             console.log(obj2.name);*/
43             
44             //設置obj2為null
45             obj2 = null;
46             
47             /*console.log(obj);
48             console.log(obj2);*/
49             
50             var c = 10;
51             var d = 10;
52             //console.log(c == d);
53             
54             var obj3 = new Object();
55             var obj4 = new Object();
56             obj3.name = "沙和尚";
57             obj4.name = "沙和尚";
58             
59             /*console.log(obj3);
60             console.log(obj4);*/
61             
62             /*
63              * 當比較兩個基本數據類型的值時,就是比較值。
64              * 而比較兩個引用數據類型時,它是比較的對象的內存地址,
65              *         如果兩個對象是一摸一樣的,但是地址不同,它也會返回false
66              */
67             console.log(obj3 == obj4);
68             
69             
70         </script>
71     </head>
72     <body>
73     </body>
74 </html>

 

內容;

1.JS中的變量都是保存到棧內存中的,基本數據類型的值直接在棧內存中存儲,值與值之間是獨立存在,修改一個變量不會影響其他的變量

 

 

 

2.對象是保存到堆內存中的,每創建一個新的對象,就會在堆內存中開辟出一個新的空間,而變量保存的是 對象的內存地址(對象的引用),如果兩個變量保存的是同一個對象引用,
當一個通過一個變量修改屬性時(重置obj.name的屬性值時),另一個(obj2的值)也會受到影響。
 

 

3.當修改基本數據類型obj2的值為null值時,對obj的屬性值不受影響 。

 

 4.當比較兩個基本數據類型的值時,就是比較值。而比較兩個引用數據類型時,它是比較的對象的內存地址,如果兩個對象是一摸一樣的,但是地址不同,它也會返回false

 

 

 
 

 
 


免責聲明!

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



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