概念
javascript和所有编程语言一样,可以有3种方式传递一个数据值。
第一,复制:把他复制给一个新的变量。
第二,作为参数传递。
第三,和另外一个值进行比较
有两种基本的方式操作数据值——传值和传址。
传值:数据通过值被操作,在赋值过程中,对实际的值作了一份拷贝,这个拷贝存储到一个变量、对象属性或数组元素中,拷贝的值和原始的值是分别存储的两份完全独立值。
在函数传递过程中,传递的是这个拷贝。
传址:数值只有一份真实的拷贝,被操作的是该值的引用(地址)
function cz_tst()
{
code.value = cz_tst.toString();
var n=1;
var m=n;//拷贝副本(两个地址)
res.value += "操作前:n,m = "+n.toString()+"\t"+m.toString()+"\n";
m = 2;//复制操作后
res.value += "操作后:n,m = "+n.toString()+"\t"+m.toString()+"\n";
var str1 = "hello";
var str2 = str1;//引用地址(一个地址)
str2 = "你好";
res.value += "操作后:str1 = "+str2+"\n";
var arr1 = new Array(1,2,3,4,5);
var arr2 = arr1;
arr2[0] = 0;
res.value += "操作后:arr1 = "+arr1.toString()+"\n";
}
操作前:n,m = 1 1
操作后:n,m = 1 2
操作后:str1 = 你好
操作后:arr1 = 0,2,3,4,5