一个js传参赋值的问题?

图片说明
为什么obj.a没有变成2???

过程是这样的:
1.计算出obj.a的值
2.将值赋值给一个新的变量:foo的参数
3.给参数重新赋值

这个是值传递,你只是把obj.a的值作为参数传给了函数,因此对obj对象不会有影响

变量的作用域不够吧,参数param在上述第三行就死亡了

因为 你是吧OBJ.a的值传过去了。并不是改变obj.a

如果你想要改变值的话,可以写成

 obj.a = foo(obj.a);

调用foo函数的时候是值传递,该函数在运行时会”克隆“一个类似于obj.a变量的”变量“,所以它本身不会影响obj对象的值。

调用foo函数的时候是值传递,而obj.a的地址没有一起传递