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

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

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


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
원시값의 복사는 값 그 자체를 복사한다.
참조값의 값은 힙 메모리에 있는 객체를 가리키는 포인터이다. 따라서 참조값의 복사는 힙메모리에 있는 같은 객체를 가리키는 포인터가 복사되는 것이다. (아래 그림에서 빨간색 화살표)

애플리케이션이 운영체제로부터 미리 할당받는 메모리 영역, 브라우저가 쓰는 메모리

그러나 혼자하려니 촘 외롭다


'일상의 주절주절' 카테고리의 다른 글

내가 만들었지만 맛없었던 요리  (0) 2019.01.17

자바스크립트의 변수는 느슨한 타입을 취하므로 변수는 특정 시간에서 특정 값을 가리키는, 문자 그대로 이름일 뿐이다.

종류

1. 원시값

2. 참조값 - 여러 값으로 구성되는 객체를 의미. 메모리에 저장된 객체. 자바스크립트는 객체의 메모리를 직접 조작하지 않고, 해당 객체에 대한 '참조'를 조작한다. 따라서 객체를 가리키는 값은 '참조로 접근한다.'라고 한다.

문자열(string)의 경우 다른 언어와 다르게 원시값으로 본다.



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

scope chain  (1) 2019.01.15
타입 판별  (0) 2019.01.15
매개변수의 전달  (0) 2019.01.15
값 복사  (0) 2019.01.14
힙(heap)  (0) 2019.01.14

function 함수 (매개변수) {함수 표현식}

위 형태로 함수를 정의 하는데, 매개 변수는 기호 쉼표(,)로 여러개의 값을 가질 수 있다.

함수에서 선언하는 매개 변수의 값과 상관없이, 함수를 호출할 때 매개 변수를 여러개 또는 0개 넘길 수 있는데, 이게 가능한 이유는 자바스크립트 내부에서 매개 변수가 배열로 표현되기 때문이다. 빈 배열이어도 상관없고, 선언한 매개 변수의 갯수 보다 더 많아도 에러로 처리하지 않는다.

함수는 arguments 라는 객체를 갖고 있는데 이 값을 통해서 매개 변수 값에 접근할 수 있다.


문장 lable 과 같이 많이 쓰이는데,

break : 루프에서 빠져나가 즉시 다음 문장을 실행한다.

continue: 이 문구를 만나는 즉시 다시 조건문으로 돌아가 루프를 이어 나간다. ( continue를 만나는 즉시 루프의 실행을 1회 건너뛰고 다시 이어나간다고 생각하면 편한듯)



+ Recent posts