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
25 //------------------------------------------------------------------------------------------
26
27 var a = 123;
28 var b = a;
29 a++;
30
31 console.log(a);//124
32 console.log(b);//123
33
34 //--------------------------------------------------
35
36 var obj = new Object();
37 obj.name = "孙悟空";
38 var obj2 = obj;
39
40 //修改obj的name属性
41 obj.name = "猪八戒";
42
43 console.log(obj.name);//猪八戒
44 console.log(obj2.name);//猪八戒
45
46 //--------------------------------------------------
47
48 //设置obj2为null
49 obj2 = null;
50
51
52 console.log(obj);//[object Object]
53 console.log(obj2);//null
54
55 obj = null;
56 console.log(obj);//null
57
58 //--------------------------------------------------
59
60 var c = 10;
61 var d = 10;
62 console.log(c == d);//true
63
64 var obj3 = new Object();
65 var obj4 = new Object();
66 obj3.name = "沙和尚";
67 obj4.name = "沙和尚";
68
69 console.log(obj3);//[object Object]
70 console.log(JSON.stringify(obj3));//{"name":"沙和尚"}
71
72 console.log(obj4);//[object Object]
73 console.log(JSON.stringify(obj4));//{"name":"沙和尚"}
74
75
76 /*
77 * 当比较两个基本数据类型的值时,就是比较值。
78 * 而比较两个引用数据类型时,它是比较的对象的内存地址,
79 * 如果两个对象是一摸一样的,但是地址不同,它也会返回false
80 */
81 console.log(obj3 == obj4);//false
82
83 var obj5 = obj3;
84 console.log(obj3 == obj5);//true
85
86
87 </script>
88 </head>
89 <body>
90 </body>
91 </html>