pdw00 2013-10-24
javascript基本类型和引用类型(合成类型)
基本数据类型在内存中具有固定大小,而引用类型(如对象、数组、函数等类型)则可以具有任意长度。因此,不能将引用类型直接存储在关联每个变量的固定内存地址中,实际上存储的只是对这个值的引用。通常,该引用的形式是指针或内存地址。
基本类型和引用类型的差别是非常重要的,对二者的引用也会出现很大的差别。看下面的例子,全部使用了数值型(基本类型):
<script language="javascript" type="text/javascript">
<!--
var a = 1;
var b = a;
a = 2;
document.write("a的值为:" + a + "<br />");
document.write("b的值为:" + b );
//-->
</script>
输出:
a的值为:2
b的值为:1
从上面的结果可以看出,尽管a的值已经改变,但b并未随之改变。下面我们看下用数组(引用类型)的例子:
<script language="javascript" type="text/javascript">
<!--
var a = [1,2];
var b = a;
a[0] = 2;
document.write("a的值为" + a + "<br />");
document.write("b的值为" + b );
//-->
</script>
输出:
a的值为2,2
b的值为2,2
可以看出,b的值是随着a的值而改变的。这是因为,在"var b = a;"语句中,赋给b的只是对数组值的一个引用,而不是数组本身。执行该条语句后,只不过有了两个对数组的引用而已。