모던 자바스크립트 딥다이브

front-end/JavaScript

[JavaScript] 10. 실행컨텍스트

📖 모던 자바스크립트 교재) 23장. 실행컨텍스트 실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 01. 소스코드의 타입 다음 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입 설명 전역 코드 전역에 존재하는 소스코드 / 전역에 정의된 함수, 클래스 등의 내부 코드는 포함 X 함수 코드 함수 내부에 존재하는 소스코드 / 함수 내부에 중첩된 함수, 클래스 등의 내부 코드 포함 X eval 코드 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드 모듈 코드 모듈 내부에 존재하는 소스코드 / 모듈 내부의 함수, 클래스 등의 내부 코드 포함 X ➡️ 소스코드를 4가지 타입으로 구분하는 이유 : 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 ..

front-end/JavaScript

[JavaScript] 16. 함수와 일급 객체

📖 모던 자바스크립트 교재) 18장. 함수와 일급 객체 01. 일급 객체 다음 조건을 만족하는 객체를 일급 객체라 하며, 자바스크립트의 함수는 모두 만족하여 일급 객체다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. ⭐ 함수의 매개변수에 전달할 수 있다. ⭐ 함수의 반환값으로 사용할 수 있다. 🖥️ 예시 코드 // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. const increase = function(num) { return ++num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase }; // 3. 함수는 매개변수에 전달할 수 있다. //..

front-end/JavaScript

[JavaScript] 15. 생성자 함수에 의한 객체 생성

📖 모던 자바스크립트 교재) 17장. 생성자 함수에 의한 객체 생성 다양한 객체 생성 방식 중, 생성자 함수를 사용하여 객체를 생성하는 방식을 살펴보도록 하자. 01. Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. 🖥️ 예시 코드 // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function() { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee"..

front-end/JavaScript

[JavaScript] 14. 프로퍼티 어트리뷰트

📖 모던 자바스크립트 교재) 16장. 프로퍼티 어트리뷰트 01. 내부 슬롯과 내부 메서드 프로퍼티 어트리뷰트를 이해하기 위한 개념이다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. ⚠️ 자바스크립트 엔진에서 실제로 동작하지만, 외부로 공개된 객체의 프로퍼티는 아니다. -> 직접 접근할 수 없다. 02. 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 프로퍼티의 상태 : 프로퍼티의 값(value), 값의 갱신 가능 여부(writable)..

front-end/JavaScript

[JavaScript] 13. let, const 키워드와 블록 레벨 스코프

📖 모던 자바스크립트 교재) 15장. let, const 키워드와 블록 레벨 스코프 ※ 변수 선언 / 할당 / 초기화 변수 선언 : 변수를 정의하는 것 var foo; 변수 할당 : 변수가 선언된 후 대입 연산자(=)를 통해 값을 넣어주는 것 var foo; foo = 1; 변수 초기화 : 변수를 선언함과 동시에 값을 넣어주는 것 var foo = 1; ※ const vs. let vs. var 간단히 정리하자면 다음과 같다. 1. const const a = b; const a = c; // 재선언 금지 const a = b; a = c; // 재할당 금지 2. let let a = b; let a = c; // 재선언 금지 let a = b; a = c; // 재할당은 가능 3. var var a =..

front-end/JavaScript

[JavaScript] 12. 전역 변수의 문제점

📖 모던 자바스크립트 교재) 14장. 전역 변수의 문제점 ⭐ 전역 변수의 무분별한 사용은 위험하여, 반드시 사용해야 해야 할 이유를 찾지 못한다면 지역 변수를 사용하기로 하자. 01. 변수의 생명 주기 1) 지역 변수의 생명 주기 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고, 함수가 종료하면 소멸한다. ❓ "변수 선언의 실행 시점과 변수 호이스팅" 에서 '변수 선언은 런타임 이전 단게에서 자바스크립트 엔진에 의해 먼저 실행된다.' 라고 했다. 하지만 이는 전역 변수에 한정된 것이다. 함수 내부에서 선언한 변수는 함수가 호출된 직후, 자바스크립트 엔진에 의해 먼저 실행된다. 즉, 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다! 🖥️ 예제 코드 var x = 'global'; funct..

front-end/JavaScript

[JavaScript] 11. 스코프

📖 모던 자바스크립트 교재) 13장. 스코프 01. 스코프란? 스코프(scope, 유효범위)는 식별자가 유효한 범위를 말한다. 식별자를 검색할 때 사용하는 규칙이다. 스코프는 변수, 함수와 깊은 관련이 있다. var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프는 다르게 동작한다. 🖥️ 예제 코드 var var1 = 1; if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 } } function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 ..

front-end/JavaScript

[JavaScript] 9. 함수

📖 모던 자바스크립트 교재) 12장. 함수 01. 함수란? 함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 매개 변수 : 함수 내부로 전달 받는 변수 인수 : 입력 반환값 : 출력 💡 함수 호출 ➡️ 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시하는 것 ➡️ 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고, 실행 결과, 즉 반환값을 반환한다. 🖥️ 예제 코드 // 함수 정의 function add(x, y) { return x + y; } // 함수 호출 var result = add(2, 5); // 함수 add에 인수 2, 5를 전달하면서 호출하면 반환값..

front-end/JavaScript

[JavaScript] 8. 원시 값과 객체의 비교

📖 모던 자바스크립트 교재) 11장. 원시 값과 객체의 비교 자바스크립트가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefinedm 심벌, 객체 타입)은 원시 타입과 객체 타입으로 구분할 수 있다. 원시 타입의 값 변경 불가능한 값 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값 저장 값에 의한 전달 : 다른 변수에 할당하면 원본의 원시 값 복사되어 전달 객체(참조) 타입의 값 변경 가능한 값 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값 저장 참조에 의한 전달 : 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달 01. 원시 값 1) 변경 불가능한 값 원시 타입의 값은 변경 불가능한 값이다. 한번 생성된 원시 값은 읽기 전용 값으로서 변경..

front-end/JavaScript

[JavaScript] 7. 객체 리터럴

📖 모던 자바스크립트 교재) 10장. 객체 리터럴 01. 객체란? 자바스크립트는 객체(object) 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식)은 모두 객체다. 객체는 변경 가능한 값이다. 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키(key)와 값(value)으로 구성된다. 프로퍼티의 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드(method)라 부른다. 객체는 객체의 상태를 나타내는 값(프로퍼티)과 프로퍼티를 참조하고 조작할 수 있는 동작(메서드)을 모두 포함할 수 있음 -> 상태와 동작을 하나의 단위로 구조화할 수 있어 유용. 02. 객체 리터럴에 의한 객체 생성 ※ 클래스 기반 객체지향 언..

gaan
'모던 자바스크립트 딥다이브' 태그의 글 목록