JavaScript:

[JavaScript] 클래스(class)

⚠️ 모던 자바스크립트 딥 다이브를 읽고 작성한 글입니다. 함수형 컴포넌트를 주로 사용하다 보니 클래스를 잘 사용하지 않게 되는데, 다른 프로그래밍 언어에서 근간이 되는 만큼 제대로 파악해 보자!그전에 먼저 클래스와 생성자 함수를 비교해 보자! 클래스 생성자 함수 new 연산자 없이 호출 시 에러 발생 new 연산자 없이 호출 시 일반 함수로 호출 extends, super 키워드 사용 가능 사용 불가능 호이스팅이 발생하지 않는 것처럼 동작 함수 호이스팅, 변수 호이스팅 발생 모든 코드에 암묵적으로 strict mode 실행 암묵적으로 strict mode 지정되어 있지 않다. 보시다시피 클래스는 생성자 함수 기반의 객체 생성 방식보다 견고하고 명료하다. 이렇듯 클래스는 클래스 기반 객체지향 프로그래밍 ..

[JavaScript] 클로저(closure)

⚠️ 모던 자바스크립트 딥 다이브를 읽고 작성한 글입니다. 클로저를 설명하기에 앞서 명확하게 기억해야 할 것이 있다. 바로 자바스크립트는 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다는 것이다. (이를 렉시컬 스코프라고 한다.) 즉, 함수를 어디서 호출하는지는 함수의 상위 스코프 결정에 어떠한 영향도 주지 않는다는 말이기도 하다. 👀 짚고 넘어가기 렉시컬 환경은 자신의 '외부 렉시컬 환경에 대한 참조'를 통해 상위 렉시컬 환경과 연결되는 것이고, 이를 스코프 체인이라 한다. 그리고 상위 렉시컬 환경이 곧 상위 스코프이다. 이때 함수는 자신의 내부 슬롯 [[Environment]]에 상위 스코프의 참조를 저장한다. 클로저란? 서론이 길었는데 그럼 클로저는 도대체 무엇일까? 우선 예제부터 살펴보자...

[JavaScript] 실행 컨텍스트(execution content)

⚠️ 모던 자바스크립트 딥 다이브를 읽고 작성한 글입니다. 실행컨텍스트는 자바스크립트의 동작 원리의 핵심 개념이다. 소스코드의 타입 ECMAScript는 소스코드를 4가지 타입으로 구분하며, 이 타입들은 실행 컨텍스트를 생성한다. 타입이 구분되어 있는 이유는 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문이다. 전역 코드: 전역 스코프를 생성하여, 전역 변수(var), 전역 함수(함수 선언문)들을 관리한다. 함수 코드: 지역 스코프를 생성하고 지역 변수, 매개변수, arguments 객체를 관리한다. 전역 스코프와의 스코프 체인으로 만든다. eval 코드: 엄격 모드에서 자신만의 독자적인 스코프를 생성한다. 모듈 코드: 모듈별로 독립적인 모듈 스코프를 생성한다. 평가와 실행 자바스크..