按值传递是指两变量间赋值时,或者将变量作为参数传递给函数的参数变量时,其实只是将原变量的值赋值一个副本给对方。
原始类型中,修改新变量,不会影响原变量的值;如下:
var a=10,b=20;
var x=a;y=b;
x--;
y--;
console.log(x); //9
console.log(y); //19
console.log(a); //10
console.log(b); //20
注:JS中,所有函数的参数都是按值传递的。
按引用传递,传递的参数是按引用进行传递,其实传递的引用地址,也就是变量所对应的内存空间的地址;如下:
var a=[1,2,3];
var b=a;
console.log(b[0]); //1
b[0]++;
console.log(a[0]); //2
以上代码中,将a赋值给b,其实是将变量在内存中保存的地址赋值给了b,两个变量共用一个地址,因此当b发生变化时,a也同样会受到影响。