为什么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的地址没有一起传递