看下面的JavaScript程序,写出a与b的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=800px, initial-scale=1.0">
<title>test</title>
<script>
var a = 123;
var b = a;
a++;
document.writeln("a=" + a);
document.writeln("b=" + b);
</script>
</head>
<body>
</body>
</html>
结果是
a=124 b=123
在下面的程序中,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=800px, initial-scale=1.0">
<title>test</title>
<script>
var obj1 = new Object();
obj1.name = "Tom";
var obj2 = obj1;
obj1.name = "Jerry";
document.writeln(obj1.name);
document.writeln(obj2.name);
</script>
</head>
<body>
</body>
</html>
结果都是Jerry。
1.基本数据类型
JavaScript中的基本数据类型有number,string,boolean ,null 和undefined。
2.引用数据类型
object
两者的区别
JavaScript中的变量都是保存在栈内存当中的,
- 基本数据类型的值是直接在栈内存中存储的,值与值之间独立存在,修改一个变量的值不会影响另一个变量的值。
b=a相当于创建变量b,然后把a的值复制给B,a和b单独保存,修改a的值不影响b的值。
- 引用数据类型即对象,是保存在堆内存中的,每创建一个对象,就会在堆内存中开辟一个空间,变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用的地址,则修改一个变量的值(相当于修改的是内存中的值),另一个变量的值也会改变。
但是,如果修改obj2的值为NULL,相当于断开了obj2和堆内存中内存空间的联系,此时,obj2的值为null,但是obj1的值不变。
当比较两个基本数据类型时,比较的就是基本数据类型的值,
但是比较引用数据类型时,比较的是引用数据类型的内存地址,就算两个引用数据类型的值相同,但是地址不同时,使用==比较,结果也是false。