今天看到一个问题,引申出来另一个疑问。
第一种情况:
var x = [1, 2];
function change (data) {
data = 3;
}
change(x);
console.log(x); //[1, 2]
第二种:
var x = [1, 2];
function change (data) {
data[0] = 3;
data[1] = 4;
}
change(x);
console.log(x); //[3, 4]
对比两种情况,js是怎么区分函数的参数是值传递还是引用传递?此中情况涉及到重载机制么?
javascript 变量,实际是一个到对象的 binding 。
赋值只修改 binding ,不修改对象。
但是
a.b =
会修改a
绑定的对象的b
属性的 binding ,于是改变了 a 绑定的对象(因为它的一个属性变化了。