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
