看了高教这本书,函数传递的章节,有这样的代码:
function setName(obj) { obj.name = '小明' obj = new Object() obj.name = '小华' } var person = new Object() setName(person) console.log(person.name)
书上说的是函数参数是按值传递的,当在函数内部重写obj时,这个变量引用 的就是一个局部变量了,但是我自己写了一个:
var obj1 = new Object() var obj2 = obj1 obj1.name = '小明' obj1 = new Object() obj1.name = '小华' obj2.age = 22 console.log(obj1.age) //undefined console.log(obj2.name) //小明
重写obj1后,改变obj1的值,obj2的值没有变,相反的改变obj2值后,也同样不会变,这不是跟函数的传参一样吗,都是按值传递的
相关分类