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 Undefined11 ?????????????* 12 ?????????????* 引用数据类型13 ?????????????* ????Object14 ?????????????* 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);//12432 ????????????console.log(b);//12333 ????????????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为null49 ????????????obj2 = null; 50 ????????????51 ????????????52 ????????????console.log(obj);//[object Object]53 ????????????console.log(obj2);//null54 ????????????55 ????????????obj = null;56 ????????????console.log(obj);//null57 ????????????58 ????????????//--------------------------------------------------59 ????????????60 ????????????var c = 10;61 ????????????var d = 10;62 ????????????console.log(c == d);//true63 ????????????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 ?????????????* ????????如果两个对象是一摸一样的,但是地址不同,它也会返回false80 ?????????????*/81 ????????????console.log(obj3 == obj4);//false82 ????????????83 ????????????var obj5 = obj3;84 ????????????console.log(obj3 == obj5);//true85 ????????????86 ????????????87 ????????</script>88 ????</head>89 ????<body>90 ????</body>91 </html>
JS基础_基本数据类型和引用数据类型
原文地址:http://www.cnblogs.com/ZHOUVIP/p/7683800.html