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)
過程如圖