엘리스 자바스크립트 3주차 (2) 실행컨텍스트, 렉시컬 환경, this, closure

울라불라데덴네·2022년 12월 23일
1

실행 컨텍스트

실행 컨텍스트(Execution Context)
자바스크립트 코드가 실행되는 환경이다. 코드에서 참조하는 변수, 객체(함수 포함), this 등에 대한 레퍼런스가 있고 실행컨텍스트는 전역에서 시작해서 함수가 호출될 때 스택에 쌓이게 된다.

  • 자바스크립트가 실행 될 때 전역 실행 컨텍스트가 만들어진다.
  • 함수가 실행될 때 함수 실행컨텍스트가 만들어진다.

렉시컬 환경

렉시컬 환경(Lexical Environment)
함수의 렉시컬 환경은 함수가 사용하는 변수들을 둘러싼 환경을 의미한다. 특정 변수의 값은 함수의 렉시컬 환경 안에서 찾을 수 있으며 실행 컨텍스트 안에 정의된 Variable Object로 이해할 수 있다.
code block, function, script를 실행하기 앞서 생성되는 특별한 객체로 실행할 스코프 범위 안에 있는 변수와 함수를 ⚠️프로퍼티 로 저장하는 객체이다.
⚠️ 프로퍼티 : 자바스크립트를 공부하게되면 프로퍼티라는 단어를 자주 듣게 되는데 이것은 어떤 값을 나타내는 것이다. 즉, 속성값이라는 의미


this

  • 함수가 호출되는 상황은 4가지가 있다.
  1. 함수 호출 - 함수를 직접 호출
  2. 메서드 호출 - 객체의 메서드를 호출
  3. 생성자 호출 - 생성자 함수를 호출
  4. 간접 호출 - call, apply 등으로 함수를 간접 호출
function myFunc() {
	console.log("다니엘"
}

const newJeans = {
	name : '하니'
    	console.log(this.name)
    }
}
출력 : 하니

closure

클로져(closure)
어떤 함수(outer) 내부에 선언된 함수(inner)가 바깥 함수(outer)의 지역변수(outerVariable)를 참조하는 것이 함수(outer)가 종료된 이후에도 계속 유지되는 현상을 말합니다.
그래서 스코프/컨텍스트/비공개 변수와 함수의 관계를 잘 말해주어야한다.

WHY

클로져를 사용하느냐
➡️ 상태를 안전하게 은닉하고 보존시키기 위함이다. 즉, 여러 개발자들이 협업을 할 때 실수를 방지하고 더 탄탄한 코드를 만들기 위함이다. 클로져를 잘 활용하면 이중변수에러같은 것들을 방지할 수 있다.

profile
Get ready with me

0개의 댓글