본문 바로가기

전체 글109

모던 자바스크립트 Deep Dive - 실행 컨텍스트 23장 실행 컨텍스트 소스코드의 타입 4가지 타입의 소스코드는 실행 컨텍스트를 생성하고 타입에 따라 실행 컨텍스트 생성 과정, 관리 내용이 다름. 1) 전역 코드 전역 스코프 생성 전역 실행 컨텍스트 생성 2) 함수 코드 지역 스코프 생성 함수 실행 컨텍스트 생성 3) eval 코드 4) 모듈 코드 독립적인 모듈 스코프 생성 모듈 실행 컨텍스트 생성 소스코드의 평가와 실행 JS엔진은 소스코드를 소스코드 평가 와 소스코드 실행 과정으로 나누어 처리함 평가 과정 : 실행 컨텍스트 생성, 선언문(변수, 함수)만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프에 등록함. 평가 과정 후 : 선언문 제외 소스코드 순차적으로 실행. === 런타임 실행소스코드 실행에 필요한 정보(변수,.. 2024. 1. 17.
모던 자바스크립트 Deep Dive - this 22장 this this 키워드 메서드는 자신이 속한 객체의 상태(프로퍼티)를 참조하고 변경할 수 있어야함. ⇒ 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야함. 객체 리터럴 방식으로 생성한 객체는 메서드 내부에서 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조 가능. 예제의 객체리터럴은 circle에 할당되기 직전에 평가됨.⇒ getDiameter메서드가 호출되는 시점에는 이미 객체 리터럴의 평가가 완료되어 객체 생성되어있음. ⇒ 메서드 내부에서 circle 참조 가능. 22-01 const circle = { // 프로퍼티: 객체 고유의 상태 데이터 radius: 5, // 메서드: 상태 데이터를 참조하고 조작하는 동작 getDiameter() { // 이 메서드가 자신이 속한 객체의 .. 2024. 1. 16.
모던 자바스크립트 Deep Dive - 빌트인 객체 21장 빌트인 객체 자바스크립트 객체의 분류 표준 빌트인 객체 : ECMAScript 사양에 정의. 앱 전역의 공통 기능 제공. 별도 선언 없이 전역 변수처럼 언제나 참조 가능. 호스트 객체 : ECMAScript 사양에 정의x. 자바스크립트 실행환경(브라우저)에서 추가로 제공하는 객체. 사용자 정의 객체 : 표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아님. 사용자가 직접 정의한 객체 표준 빌트인 객체 Object, String, Number, Boolean, Symbol, Date, Math, Array, … 인스턴스를 생성할 수 있는 생성자 함수 객체.(Math, Reflect, JSON 제외) 프로토타입 메서드, 정적 메서드를 제공. 생성자 함수로 호출하여 인스턴스 생성 가능 21-0.. 2024. 1. 15.
모던 자바스크립트 Deep Dive - 생성자 함수에 의한 객체 생성 17장 생성자 함수에 의한 객체 생성 객체 생성 방식 중에 객체 리터럴에 의한 객체 생성 방식은 가장 일반적이고 간단한 객체 생성 방식이다. 예제 var person = { name: 'Lee', sayHello: function() { console.log('Hello! My name is ${this.name}.'); } } 객체 생성 방식 중에서 생성자 함수를 사용하여 객체를 생성하는 방식과 리터럴 방식과의 장단점을 살펴보자. Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체 생성 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. 예제 // 빈 객체 생성 const person = new Object(); // 프로.. 2024. 1. 14.
모던 자바스크립트 Deep Dive - let, const 키워드와 블록 레벨 스코프 15장 let, const 키워드와 블록 레벨 스코프 var 키워드로 선언한 변수의 문제점 1) 변수 중복 선언 허용 var는 중복 선언이 가능 예제 var x = 1; var y = 1; var x = 100; var y; // 초기화문이 없는 변수 선언문은 무시된다. console.log(x); // 100 console.log(y); // 1 2) 함수 레벨 스코프 var는 함수 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var로 선언한 변수는 모두 전역변수가 된다. 예제 var x = 1; if(true) { var x = 10; } console.log(x); // 10 예제 var i = 10; for(var i=0; i 2024. 1. 13.
모던 자바스크립트 Deep Dive - 전역 변수의 문제점 14장 전역 변수의 문제점 변수의 생명 주기 변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 그리고 언젠가는 소멸한다. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. 지역 변수의 생명주기 전역 변수의 생명 주기는 앱의 생명 주기와 같다. 하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. ⇒ 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. 예제 function foo() { var x = 'local'; console.log(x); return x; } foo(); console.log(x); // ReferenceError: x is not defined 예제에서 x는 foo()가 실행되는 시점에서 코드로 들어가기 전에 undefined로 초기.. 2024. 1. 13.