1. 값을 저장하는 방식
자바스크립트뿐만 아니라 대부분의 프로그래밍 언어들은 값을 변수에 저장하는 방식이 크게 2가지가 있다.
- 1. 어떤 값을 메모리 공간에 직접 넣고 변수를 할당하는 방법
- 2. 어떤 값을 저장한 메모리의 주소를 변수에 넣는방법
이렇게 2가지가 있다.
1번의 경우를 그림으로 생각하면,
2번의 경우를 그림으로 생각하면,
보통 2번의경우는 객체를 저장할 경우 이런방식으로 값을 할당하는데, 객체는 이른바 힙(heap)이라는 메모리 공간에 할당되어 진다.
제일 아래쪽 when to use the Heap? 을 읽어보면 좋다.
1번의경우도 물론 주소가 있지만 사용하지는 않는다.
변수에 값을 직접 할당하는 경우( 1번 )는 일반적인 primitive type들을 사용할때다.
주소값을 사용하는 경우( 2번 )는 reference type들을 사용할때다.
2. pass by value vs. pass by reference
값을 전달하는 방식또한 값을 저장하는 방식과 동일하다.
- 값으로 전달하는 방식(pass by value)
- 주소값으로 전달하는 방식(pass by reference)
사실 값을 저장하는 방식만 이해하게 되면 값을 전달하는 방식은 자동적으로 알게된다.
1. pass by value
passMe 변수에 value를 할당하면 그 값(20) 을 넘기고 그 값들은 별개가 된다. value와 passMe는 남남이다.
2. pass by reference
passMe2 변수에 obj에 할당된 객체를 할당하면, 그 값들은 서로 연결되있다.
obj는 객체의 주소값을 가지고 있고 , 그 주소값을 passMe2 변수에 고대로 복사했기떄문이다.
TV(object)에는 TV를 조작할수있는 기본리모컨(variable)이 있다.
TV의 주파수(address)만 리모컨이 알고있으면 조작이 가능하다..
요즘 IPTV 많이 사용하지 않는가? IPTV를 설치하면 거기서 제공하는 리모컨(variable2)이 있다.
IPTV리모컨 또한 TV의 주파수만 알면 같은 TV를 조작할수가 있다.
결국 어떤 리모컨이든 TV의 주파수만 알면 TV를 조작할수가 있는것이다.
'Frontend > JAVASCRIPT' 카테고리의 다른 글
[Javascript] 변수가 살아가는곳, scope (0) | 2020.01.17 |
---|---|
[Javascript] 함수 선언문과 함수 표현식, 그리고 호이스팅 (0) | 2020.01.16 |
[Javascript] 배열의 순회 메서드(Iteration methods) (0) | 2020.01.15 |
[Javascript] 배열(Array)의 요소(element)조작 , 배열 메서드(method) (0) | 2020.01.12 |
[Javascript] Object(기본,리터럴) (0) | 2020.01.12 |