📗참조값
참조(Reference) 방식으로 작동하는 자료형은 단 하나 뿐입니다.
객체 (일반 객체, 배열, 함수 등)
값의 비교
우선 예제부터 보여드리겠습니다.
결론부터 말씀드리자면, 위 콘솔 출력 결과는 false
입니다. 이 부분에 대한 작동 원리는 비유적으로 설명드리는 편이 나을 것 같습니다.
비유 설명
우리는 기존과 같이 포스트잇을 사용합니다. 이번에도 또한 몇 가지 규칙이 존재합니다.
변수를 만들 때마다 새로운 포스트잇을 사용합니다.
참조값 자료는 부피가 방대하여 직접적으로 포스트잇에 기록할 수 없습니다.
참조값 자료는 별도의 서랍장에 보관해야 하며, 한 개의 서랍장에는 한 개의 자료만 보관할 수 있습니다.
한 개의 포스트잇에는 한 개의 정보만 적을 수 있으며, 자료가 저장된 서랍장의 위치를 적습니다.
위와 같은 예제가 있다고 가정했을때, 다음과 같은 현상이 발생한다고 생각하셔도 좋습니다.
[1, 2, 3]
이라는 객체는 포스트잇에 적을 수 없기 때문에, 서랍장 첫 번째 칸에 보관합니다.list1
이라는 이름의 포스트잇에"서랍장 첫 번째 칸"
이라고 보관된 위치 정보를 적습니다.[1, 2, 3]
이라는 객체는 포스트잇에 적을 수 없기 때문에, 서랍장 두 번째 칸에 보관합니다.list2
이라는 이름의 포스트잇에"서랍장 두 번째 칸"
이라고 보관된 위치 정보를 적습니다.result
라는 이름의 포스트잇에list1
과list2
포스트잇에 적힌 내용이 같은지 판별하여 적습니다.
list1
포스트잇에 적힌 내용은 "서랍장 첫 번째 칸"
이고, list2
포스트잇에 적힌 내용은 "서랍장 두 번째 칸"
입니다. 다르겠죠?
자바스크립트의 모든 객체는 위와 같은 방식으로 작동하며, 여러분도 위 과정을 반드시 이해하셔야 합니다.
값의 변경
위와 같은 예제가 있다고 가정했을때, 다음과 같은 현상이 발생한다고 생각하셔도 좋습니다.
{ age: 10 }
이라는 객체는 포스트잇에 적을 수 없기 때문에, 서랍장 첫 번째 칸에 보관합니다.person1
이라는 이름의 포스트잇에"서랍장 첫 번째 칸"
이라고 보관된 위치 정보를 적습니다.person2
포스트잇에person1
포스트잇의 내용을 적습니다. ("서랍장 첫 번째 칸"
)person1
포스트잇에 적힌 위치에 있는 자료의age
속성을 20으로 수정합니다.person2
포스트잇에 적힌 위치("서랍장 첫 번째 칸"
)에 있는 자료를 콘솔에 출력합니다.
위와 같이 생각해보신다면, 이해가 조금 되었을까요?
Last updated