1、概述 簡單值(基本類型)通過值複製的方式來賦值/傳遞。 複合值(對象)通過引用複製的方式來賦值/傳遞。 結合記憶體示意圖,理解會更深刻。 簡單類型的值在常量池只有一份,變數a和變數b都是常量池中2的一個副本。 變數c和變數d都是指向堆中的一個數組對象。 ...
1、概述
簡單值(基本類型)通過值複製的方式來賦值/傳遞。
複合值(對象)通過引用複製的方式來賦值/傳遞。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>值和引用</title>
</head>
<body>
<script type="text/javascript">
var a = 2;
var b = a;
b++;
//2是基本類型(位於常量池),a是該值的一個副本,b是另外一個副本,b改變時不影響a
console.log(a); //2
console.log(b); //3
var c = [1, 2, 3];
var d = c;
d.push(4);
//c和d都是執行數組(位於堆中)的2個不同引用。他們更改的是同一個值。
console.log(c); //[1,2,3,4]
console.log(d); //[1,2,3,4]
</script>
</body>
</html>
結合記憶體示意圖,理解會更深刻。
簡單類型的值在常量池只有一份,變數a和變數b都是常量池中2的一個副本。
變數c和變數d都是指向堆中的一個數組對象。