现象总结如下:
1.JS的基本类型,是按值传递的。
2.对于对象而言:分两种情况
(a).如果传递给函数的参数是对象,并且修改了这个对象的属性(某些字段的值),那么奇妙的问题就来了。原参数就被修改了。
(b).如果传递给函数的参数是对象,并且没有修改这个对象的属性的值,而是把对象作为一个整体来操作的话。原参数就没有被修改。
JavaScript高级程序设计第4.1.3节
ECMAScript所有函数参数都是按值传递的
向参数传递基本数据类型时,传递的值被复制给一个局部变量
向参数传递引用类型时,会把值的内存地址复制给一个局部变量,因此局部变量的变化会影响外部变量
但是若局部变量被赋予另一个引用类型,则局部变量保存的地址发生变化,其以后的变化,将对原来参数无任何影响