js中所有函数参数传递都是值传递
堆内存和栈内存
栈内存为自动分配的内存空间,它由系统自动释放;堆内存则是动态分配的内存,大小不定也不会自动释放。
js数据类型
- 值类型(基本类型):
字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(es6新增)。 - 引用数据类型:
对象(Object)、数组(Array)、函数(Function)。
值类型存储在栈内存中;引用类型存储在堆内存中,堆内存中对象的引用存储在栈内存中。
参数的传递
无论参数是什么类型,都是按值传递的,普通类型传递的是本身的值,引用类型传递的是自己在栈内存中的“指针”值。
var c = new Object();
c.name='xiao';
c.color='blue';
function newColor(obj){
obj.color='yellow';
}
newColor(c)
过程如图