let a = 10
let b = a
b = 82
console.log(a, b) //10 82
a에 10을 담아주고 b에 a를 대입하였다. 이 때 a는 원시자료형 number타입이므로 a에 들어있는 값만 b에 복사되어 들어간다. 이후 b의 값을 변형시켜도 a에는 전혀 영향이 가지 않는다.
const arr1 = [1, 2, 3, 4, 5]
const arr2 = arr1
arr2.push(6)
console.log(arr1, arr2) //[ 1, 2, 3, 4, 5, 6 ] [ 1, 2, 3, 4, 5, 6 ]
arr1에 배열을 선언해주고 arr2에 arr1을 대입하였다. 이 때 arr1은 Array타입으로 참조 자료형이므로 값이 아닌 arr1의 주소값이 arr2에 복사되게 된다. 따라서 이후에 arr2에 새로운 6의 값을 추가하였을 때 arr2뿐만 아니라 같은 주소값을 가지고 있는 원본 arr1에도 영향이 가게 된다. 따라서 arr1, arr2 모두 6이 추가된 배열을 가지고 있게 된다.