스코프
렉시컬 스코핑
💡 렉시컬 스코핑 : 변수의 유효 범위를 결정하는 규칙 중 하나이다.- 스코프는 함수를 호출할 때가 아닌 선언할 때 생긴다.- 함수 외부에서는 함수 내부에서 선언된 변수에 접근할 수 없다.- 정적 스코프라고도 불린다. 렉시컬 스코핑(lexical scoping) 많이들 헷갈리는 개념인데 스코프는 함수를 호출할 때가 아니라 선언할 때 생긴다.호출이 아니라 선언! 정적 스코프라고도 불린다. 다음 코드에서 console이 어떻게 찍힐지 예상해 보기var name = 'zero';function log() { console.log(name);}function wrapper() { var name = 'nero'; log();}wrapper(); 정답: zero스코프는 함수를 선언할 때 생긴다.log..
스코프 체인
💡 스코프 체인 : 꼬리를 물고 계속 범위를 넓히면서 찾는 관계를 스코프 체인이라 한다. 💡내부 함수에서는 외부 함수의 변수에 접근 가능하지만 외부 함수에서는 내부 함수의 변수에 접근할 수 없다. 전역변수와 지역변수의 관계에서 스코프 체인(scope chain)이란 개념이 나온다.내부 함수에서는 외부 함수의 변수에 접근 가능하지만 외부 함수에서는 내부 함수의 변수에 접근할 수 없다. 모든 함수들은 전역 객체에 접근할 수 있다.var name = 'zero';function outer() { console.log('외부', name); // zero function inner() { var enemy = 'nero'; console.log('내부', name); // zero } ..
클로저
💡 클로저는 스코프와 실행 컨텍스트에 대한 사전 지식이 있으면 이해하는데 도움이 된다. 💡 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 💡 클로저는 외부함수보다 중첩함수가 더 오래 유지되고 이미 생명주기가 종료한 외부 함수의 변수를 참조할 수 있다. - 상위 스코프의 어떤 식별자도 참조하지 않는 함수는 클로저가 아니다. - 중첩 함수가 클로저였지만 외부 함수보다 일찍 소멸되면 클로저의 본질에 부합하지 않는다. 클로저 함수 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. MDN에서의 정의 : 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 렉시컬 스코프(= 정적 스코프) const x = 1; function foo() { const x = 10; /..
실행 컨텍스트
💡 렉시컬 환경 - 식별자와 스코프 관리 💡실행 컨텍스트 스택 - 코드 실행 순서 관리 실행 컨텍스트 자바스크립트의 동작 원리 개념을 통해 아래 내용을 이해할 수 있다. 스코프 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식 호이스팅이 발생하는 이유 클로저 동작 방식 태스크와 큐와 함께 동작하는 이벤트 핸들러 비동기 처리의 동작 방식 소스 코드의 타입 4가지 타입 코드는 실행 컨택스트를 생성한다. 4가지로 구분하는 이유는? 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문이다. 전역 코드 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다. var 키워드, 함수선언문 함수 코드 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다. 지역 스코..