javascript中所有函数参数都是按值传递 (2)

接下来,我们也可以修改这里的函数

var a = { value : 1 } function func() { var o = a // 函数内部的参数变量,赋值函数外部的值 o = 2 // 修改内部变量的值 console.log(o) // 2 } func() // 2 console.log(a) // {value: 1}

内存中的变化示意图:

传递引用类型,函数中修改类型

由于变量a是引用类型,通过函数内部参数的赋值复制,传递了引用地址值,那么变量a和o会指向同一个内存对象。再执行func函数时,改变了变量o的数据类型,变成了基础数据类型,也就切断了引用。这样,变量a和o就没有关系了。

总结

JavaScript中所有函数参数都是按值传递的。基本类型值,传递的是实际值,引用类型,传递的是引用地址值。

参考

JavaScript深入之参数按值传递

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppyws.html