在修改bug时,说是函数的参数最好不要在函数内部重新使用。上满调用函数后输出foo.add是42,但a的值仍然是40,有些疑惑?
解决:在调用时,a的内存分配在堆中,首先是a = a +b入栈,在栈中新建a变量,等号后面a的值是从堆中调用,计算后把值42放在栈中,所有foo.add返回时42,因为a是基本类型,所以a = a + b不会改变堆内存中a的值,a的值仍然是40.如果说上面的参数a是一个对象的话,那么a在堆中的值是会改变的。因为对象在入栈是入的是地址,所以进行操作后属性的改变会保存到堆中。