b6047304bde60b34405bb84891f6cbb9.jpg


함수

실행환경→매개변수→외부변수까지 참조하여

함수를 정의하는 순간 global 실행 context에 값만 저장이 됨

자바스크립트의 함수는 값이다

<function Object>

함수는 선언할때가 아니라 실행할때 Function Execution Context가 생성

→ 또한 , 매개변수, 함수 안의 함수는 함수 안의 메모리 상에 적재되는데 메모리도 실행해야 생성됩니다

Untitled

Untitled

let,const는 TDZ에 들어감→ undefined(선언은 됐지만 값이 할당이 되지 않은 상태)

함수를 선언하게 되면 매개변수, 함수안에 함수들 함수 안 메모리상에 적재되는데, 정의되는 순간 메모리가 생성하는 게 아니라 함수의 실행컨텍스트는 실행하는 순간 생성되기 때문에 context상 메모리가 생성됨

함수의 실행이 종료되면, 가지고 있던 모든 실행환경의 메모리는 제거됨⇒ garbage collector가 수집해감

개발자는 garbage collector에 접근하지 못합니다

단순히 접근을 하지 못해서 에러가 아니라 애초에 등록되지 않아서 걍 없어요 !

let userName = 'John';

function showMessage() {
  userName = "Bob"; // (1) 외부 변수를 수정함

  let message = 'Hello, ' + userName;
  alert(message);
}

alert( userName ); // 함수 호출 전이므로 John 이 출력됨

showMessage();

alert( userName );

함수 내에서 선언한 message는 사라졌지만 외부 변수의 값을 변경함

밖에서 선언하고 함수 내에서 재할당하는 방식은 위험할 수 있음

외부변수에 참조하고 값은 변경하는 것은 모듈화시 위험할 수 있습니다 : )

→ 인자로 받아서 return으로 바꿔주는 것이 좋아요

Untitled

찐파랑: global execution ~ | 하늘색: function execution~