純值傳值 Call by value
純值就是 JavaScript 的7個原始型別,以下用 String
當賦值:
1 | var a = 'Cloud'; |
由此可知,a、b兩者互不相干
。
物件傳參考 Call by sharing
接下來用物件試試,看與上面有何差異吧。
1 | var a = { |
結果 a、b 都為 Test,也就是說 a、b 兩者是相同的
1 | console.log(a === b); /* true */ |
之所以兩者相同是因為 物件傳參考
特性
那什麼是參考
?
可以理解成是宣告物件時(a)建立記憶體空間,而此變數是指向記憶體空間
,而不是值
。
而後新變數(b)又用 a 當變數宣告,此時指向的依舊是物件。
用以下圖片更好理解: