需要明白,js基本类型存放在栈,对象存放在堆. 结论:基本类型变量作为参数,不会改变变量值.对象变量作为参数,不修改属性(访问原始对象的操作),也不会改变变量值 起因,是群里一个问题: var a = [1,2,3]; function f(a){ a = [4,2,3]; } f(a); a // [1, 2, 3] //数组内部的值没有发生改变 var a = [1,2,3]; function f(a){ a[0]=4; } f(a); a // [4,2,3] 最后数组a的值发生了改变…