函数的形参也可以看作是一个变量。
当我们把一个值类型(简单类型)变量作为参数传给函数的形参时,其实是把变量在空间里的值复制了一份给形参,在方法内部对形参做任何修改,都不会影响到外部的变量。
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x); // 输出 11
console.log(x); // 输出 10
当我们把复杂类型的变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,实参和形参其实保存的是同一个堆地址,操作的是同一个对象。
function Fruit(name) {
this.name = name;
}
function fn(x) {
console.log(x.name);
x.name = 'Apple';
console.log(x.name);
}
var b = new Fruit('Banana');
console.log(b.name); // Banana
fn(b); // 输出 Banana 和 Apple
console.log(b.name); // Apple
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。