JavaScript中值的复制和参数的传递

JavaScript中的变量分为基本类型的值和引用类型的值。

  • 基本类型的值:Undefined、Null、Boolean、Number和String。
  • 引用类型的值:object

复制变量值

在复制变量时复制的都是值,两者都产生一个新的变量。不同的是 基本类型复制的是实际的值,而引用类型复制的值是地址(指针)。外在表现为基本类型值的变量在操作时原始变量不发生变化;而引用类型变量在进行操作时改变的是存储的地址指向的内存,两个变量指向的地址一样,因此表现出来是都会发生变化。

传递参数

ECMAScript中所有的参数都是按值传递的,基本类型变量传递的是具体的值;引用变量传递的是内存地址(指针),这使得函数内的变化会反映在函数外部,因为操作的都是同一块内存地址。

下面一个例子可以证明对象是按值传递的:

1
2
3
4
5
6
7
8
9
10
function setName(obj) {
obj.name = 'Nicholas';
obj = new Object();
obj.name = 'Tonny';
}

var person = new Object();
setName(person);
alert(person.name); //"nicholas"