純值傳值 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 當變數宣告,此時指向的依舊是物件。
用以下圖片更好理解:%20-%20%E7%89%A9%E4%BB%B6%20-%20%E7%89%A9%E4%BB%B6%E7%9A%84%E5%8F%83%E8%80%83%E7%89%B9%E6%80%A7%2F%E7%89%A9%E4%BB%B6%E5%82%B3%E5%8F%83%E8%80%83.png?alt=media&token=54cb7e93-14b2-4d6c-ae38-3e260e21fb04)