Frontend/JavaScript47 16. 클로저 Closure 클로저 클로저를 사용하면 생명 주기가 종료된 외부 함수의 식별자를 참조할 수 있다. A closure is the combination of a function and the lexical environment within which that function was declared. 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 자바스크립트는 렉시컬 스코프를 따르는 프로그래밍 언어이다. 렉시컬 스코프 = 정적 스코프 = 함수를 어디서 호출했는지가 아니라 함수를 어디에서 정의했는지에 따라 상위 스코프를 결정 함수의 상위 스코프를 결정한다 === 렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값을 결정한다. 스코프의 실체는 실행 컨텍스트의 렉시컬 환경이다. 이 렉시컬 환경은 자신의 .. 2023. 12. 14. 15. 실행 컨텍스트 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르다. 4가지 소스코드 타입 전역 코드 : 전역 코드가 평가되면 전역 실행 컨텍스트 생성 함수 코드 eval 코드 : strict mode에서 자신만의 독자적인 스코프 생성 모듈 코드 소스코드의 평가와 실행 자바스크립트 엔진은 소스코드를 2개의 과정으로 나눈다. 소스코드 평가 실행 컨텍스트를 생성 변수, 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경 레코드)에 등록. 소스코드 실행(런타임) 소스코드 실행에 필요한 정보, 즉 변수나 함수의 참조를 실행 컨텍스트가 관리하는 스코프에서 검색해서 취득한다. 변수 값의 변경 등 소스코드의 실행 결과는 다시 실행 컨텍스트가 .. 2023. 12. 14. 14. this this 가 필요한 이유 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. 객체 리터럴 방식으로 생성한 객체의 경우 메서드 내부에서 메서드 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조할 수 있다. 생성자 함수로 인스턴스를 생성하려면 먼저 생성자 함수가 존재해야 한다. 생성자 함수를 정의하는 시점에는 아직 인스턴스를 생성하기 이전이므로 생성자 함수가 생성할 인스턴스를 가리키는 식별자를 알 수 없다. 이를 위해 자바스크립트는 this 라는 특수한 식별자를 제공한다. this this는 자신이 속한 객체 또는 자신이 생성할 인스턴.. 2023. 12. 14. 13. 객체 자바스크립트의 객체 표준 빌트인 객체 전역 객체의 프로퍼티로서 제공. 따라서 별도의 선언 없이 전역 변수처럼 언제나 참조 가능. 호스트 객체 자바 스크립트 실행 환경(브라우저 또는 Node.js)에서 추가로 제공하는 객체 사용자 정의 객체 : 사용자가 직접 정의한 객체 표준 빌트인 객체 Math, Reflect, JSON 을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수. 생성자 함수 객체인 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공하고 생성자 함수 객체가 아닌 표준 빌트인 객체는 정적 메서드만 제공한다. 원시값과 래퍼객체 원시값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없는데도 객체처럼 동작한다. 원시값에 대해 마치 객체처럼 마침표 표기법(또는 대괄호 표기.. 2023. 12. 14. 12. 프로토타입 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 객체지향 프로그래밍 전통적인 명령형 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임. 객체 : 상태 데이터(프로퍼티)와 동작(메서드)을 하나의 논리적인 단위로 묶은 복합적인 자료구조 상속과 프로토타입 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 코드의 중복을 제거한다. 프로토타입 객체 프로토타입은 어떤 객체의 상위 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티(메서드 포함)을 제공한다. 모든 객체는 하나의 프로토타입을 갖는다. 그리고 모든 프로토타입은 생성자 함수와 연결되어 있다. [[Prot.. 2023. 12. 8. 11. 함수는 일급 객체다. 일급 객체 무명의 리터럴로 생성할 수 있다. = 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 함수는 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미다. 객체는 값이므로 함수는 값과 동일하게 취급할 수 있다. _ _ proto _ _ 는 Object.prototype 객체의 접근자 프로퍼티다. 함수는 Object.prototype 객체로부터 _ _ proto _ _ 접근자 프로퍼티를 상속받는다. arguments 프로퍼티 arguments 객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는 순.. 2023. 12. 8. 이전 1 2 3 4 5 6 7 8 다음