参数按值传递

参考

JavaScript深入之参数按值传递
JavaScript高级程序设计(第3版)

基本类型


举个例子:

var num1= 5;
function foo(num2) {
    num2 = 2;
    console.log(num2); //2
}
foo(num1);
console.log(num1) // 1

在此,num1 中保存的值是5。当传递 num1 到函数 foo 中时,num2 中也保存了值5,但 num2 中的5与 num1 中的5是完全独立的,该值只是 num1 中5的一个副本。此后,这两个变量可以参与任何操作而不会互相影响。
传递过程如下图所示:

参数按值传递_第1张图片

引用类型


举个例子:

var obj1 = {
    value: 1
};
function foo(obj2) {
    obj2.value = 2;
    console.log(obj2.value); //2
}
foo(obj1);
console.log(obj1.value) // 2

在此,首先 obj1 保存了一个对象的实例,然后,这个值被复制到了 obj2 中,换句话说 obj1 和 obj2 都指向同一个对象。
传递过程如下图所示:

参数按值传递_第2张图片

你可能感兴趣的:(参数按值传递)