함수 외부에 있는 은 함수 내부의 매개 변수에 복사된다. 이는 변수 사이에서 값을 복사하는 것과 같다.

값이 객체인 경우, 값 복사의 경우 참조로 이루어지는 것과 달리, 매개 변수에서는 원시값 복사와 같은 형태로 복사된다. 그러나 접근할 때는 참조형태로 힙(전역)에 존재하는 객체에 접근한다. (이 부분 나도 아직 명확히 이해가 잘 안됨;)

매개변수는 함수 내에서의 지역변수라고 이해하면 편하다.


function = setName(obj) { // 매개변수 obj에 person의 값(객체)를 복사한다. <--person의 객체

obj.name = "gh" // obj의 name 속성의 값은 "gh"로 세팅된다. <--- person의 객체

obj = new Object() // obj에 새로운 값(객체)를 부여 한다. <--- 함수 내 지역변수(매개변수)에 새로운 객체 (값)을 부여했다. 이 순간 함수가 호출될 때, obj 변수에 복사되었던 person의 객체는 삭제되고, 새로운 객체가 부여되었다. 여기서부터는  person의 객체가 아닌 새로운 객체이다.

obj.name = "js" // 바로 윗줄에서 생성된 객체 name속성의 값은 "js"로 세팅된다.

}

let person = new Object()

setName(person)

console.log(person.name) //gh



'프론트엔드 개발자를 위한 자바스크립트 프로그래밍 공부 > 4장 변수와 스코프, 메모리' 카테고리의 다른 글

scope chain  (1) 2019.01.15
타입 판별  (0) 2019.01.15
값 복사  (0) 2019.01.14
힙(heap)  (0) 2019.01.14
변수, 원시값, 참조값(객체)  (0) 2019.01.11

+ Recent posts