분류 전체보기
-
1. strict mode 란? 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다. function foo() { x = 10; } foo(); console.log(x); // ? console.log(x)는 전역변수에 x 가 없으나, 자바스크립트 엔진이 전역객체에 암묵적으로 x 프로퍼티를 동적으로 추가한다. 이는 전역변수처럼 사용이 가능한데, 이를 암묵적 전역이라 한다. 위와 같은 현상은 개발자의 의도와 다르게 동작할 우려가 있으므로, var, let, const 키워드를 사용하여 변수를 선언한 다음에 사용해야한다. 혹은 ESLint 를 사용할 것 2. strict mode..
[모던자바스크립트] 20. strict mode1. strict mode 란? 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다. function foo() { x = 10; } foo(); console.log(x); // ? console.log(x)는 전역변수에 x 가 없으나, 자바스크립트 엔진이 전역객체에 암묵적으로 x 프로퍼티를 동적으로 추가한다. 이는 전역변수처럼 사용이 가능한데, 이를 암묵적 전역이라 한다. 위와 같은 현상은 개발자의 의도와 다르게 동작할 우려가 있으므로, var, let, const 키워드를 사용하여 변수를 선언한 다음에 사용해야한다. 혹은 ESLint 를 사용할 것 2. strict mode..
2023.05.23 -
자바스크립트를 이루고있는 거의 모든 것이 객체다. 자바스크립트는 명령형, 함수형, 프로토타입 기반, 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 1. 객체지향 프로그래밍 객체는 속성을 통해 여러개의 값을 하나의 단위로 구성하고, 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 집합이다. 객체는 자신의 고유한 기능을 수행하면서 다른 객체와 관계성을 가질 수 있다. 이러한 객체의 집합으로 프로그램을 표현하는 패러다임을 "객체지향 프로그래밍"이라 한다. 2. 상속과 프로토타입 어떤 객체의 프로퍼티나 메서드를 다른 객체가 상속 받아 사용가능하다. 상속의 구현을 통해 불필요한 중복을 제거하게 되며, 이는 코드 재사용 증가로 개발비용 감소를 불러온다. 자바스크립트는 프로토타입을 기반으로 상속을..
[모던자바스크립트]19.프로토타입자바스크립트를 이루고있는 거의 모든 것이 객체다. 자바스크립트는 명령형, 함수형, 프로토타입 기반, 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 1. 객체지향 프로그래밍 객체는 속성을 통해 여러개의 값을 하나의 단위로 구성하고, 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 집합이다. 객체는 자신의 고유한 기능을 수행하면서 다른 객체와 관계성을 가질 수 있다. 이러한 객체의 집합으로 프로그램을 표현하는 패러다임을 "객체지향 프로그래밍"이라 한다. 2. 상속과 프로토타입 어떤 객체의 프로퍼티나 메서드를 다른 객체가 상속 받아 사용가능하다. 상속의 구현을 통해 불필요한 중복을 제거하게 되며, 이는 코드 재사용 증가로 개발비용 감소를 불러온다. 자바스크립트는 프로토타입을 기반으로 상속을..
2023.05.21 -
1. 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. 이중대활호([[..]])로 감싼 이름들을 말하며, 직접적 접근이나 호출이 불가능하다. (내부 슬롯의 경우 던더프로토(__proto__)를 통해 간접적으로 접근 할 수 있다. 2. 프로퍼티 어트리뷰트 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티 어트리뷰트(프로퍼티의 상태를 나타냄)를 기본값으로 자동정의한다. 프로퍼티 어트리뷰트(프로퍼티의 상태) : 프로퍼티의 값([[Value]]), 값의 갱신가능 여부([[Writable]]), 열거 가능여부([[Enumerable]]), 재정의 가능 여부([[Conf..
[모던자바스크립트] 16.프로퍼티 어트리뷰트1. 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. 이중대활호([[..]])로 감싼 이름들을 말하며, 직접적 접근이나 호출이 불가능하다. (내부 슬롯의 경우 던더프로토(__proto__)를 통해 간접적으로 접근 할 수 있다. 2. 프로퍼티 어트리뷰트 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티 어트리뷰트(프로퍼티의 상태를 나타냄)를 기본값으로 자동정의한다. 프로퍼티 어트리뷰트(프로퍼티의 상태) : 프로퍼티의 값([[Value]]), 값의 갱신가능 여부([[Writable]]), 열거 가능여부([[Enumerable]]), 재정의 가능 여부([[Conf..
2023.05.16 -
1. var 키워드로 선언한 변수의 문제점 ES5까지 변수를 선언할 수 있는 방법은 var 키워드가 유일했다. var는 다음과 같은 특징을 가지고 있다. 1️⃣ 변수 중복 선언 허용 var로 선언한 변수는 중복 선언이 가능하다 var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 var 키워드로 x 와 y 변수가 중복 선언되었는데, 중복선언을 하게 되면 초기화문 유무에 따라 다르게 동..
[모던자바스크립트] 15.let, const 키워드와 블록 레벨 스코프1. var 키워드로 선언한 변수의 문제점 ES5까지 변수를 선언할 수 있는 방법은 var 키워드가 유일했다. var는 다음과 같은 특징을 가지고 있다. 1️⃣ 변수 중복 선언 허용 var로 선언한 변수는 중복 선언이 가능하다 var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 var 키워드로 x 와 y 변수가 중복 선언되었는데, 중복선언을 하게 되면 초기화문 유무에 따라 다르게 동..
2023.05.15 -
1. 변수의 생명주기 1-1. 지역변수의 생명주기 변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 그리고 언젠가 소멸한다. 변수에는 생성되고 소멸되는 생성주기가 있는데, 생명주기가 없다면 프로그램을 종료하지 않는 한 영원한 메모리 공간을 점유하게 된다. 변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행되는데, 이는 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행된다. 이는 전역 변수에 한정된 것이다. 만약 변수가 지역 변수라면, 지역변수의 생명주기는 함수의 생명주기와 일치한다. 지역변수의 생명주기와 함수의 생명주기는 대게 일치 하지만, 지역 변수가 함수보다 오래 생존하는 경우도 있다. 클로저와 관련된 경우이다. 함수가 종료되면 함수가 생성한 스코프가 소멸하는게 일반적인 경우이지만..
[모던자바스크립트] 14.전역 변수의 문제점1. 변수의 생명주기 1-1. 지역변수의 생명주기 변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 그리고 언젠가 소멸한다. 변수에는 생성되고 소멸되는 생성주기가 있는데, 생명주기가 없다면 프로그램을 종료하지 않는 한 영원한 메모리 공간을 점유하게 된다. 변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행되는데, 이는 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행된다. 이는 전역 변수에 한정된 것이다. 만약 변수가 지역 변수라면, 지역변수의 생명주기는 함수의 생명주기와 일치한다. 지역변수의 생명주기와 함수의 생명주기는 대게 일치 하지만, 지역 변수가 함수보다 오래 생존하는 경우도 있다. 클로저와 관련된 경우이다. 함수가 종료되면 함수가 생성한 스코프가 소멸하는게 일반적인 경우이지만..
2023.05.08 -
1. 스코프란? 식별자가 유요한 범위, 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 var x = 'global'; function foo() { var x = 'local'; console.log(x); // local } foo(); console.log(x); // global 전역에서 선언된 var x = 'global'과 foo함수 내에 선언된 var x = 'local'; 은 식별자 이름은 같지만 스코프는 다르다. 자바스크립트 엔진은 코드를 실행할때 코드의 문맥을 고려한다. ✅코드의 문맥과 환경 렉시컬환경 : 코드가 어디서 실행되며 주변에 어떤 코드가 있는지 실행 컨텍스트 : 렉시컬 환경(코드의 문맥)을 구현한 것 변수나 함수의 이름과 같은 식별자는 어떤 값을 구별하여 식별해 낼 수 ..
[모던자바스크립트] 13. 스코프1. 스코프란? 식별자가 유요한 범위, 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 var x = 'global'; function foo() { var x = 'local'; console.log(x); // local } foo(); console.log(x); // global 전역에서 선언된 var x = 'global'과 foo함수 내에 선언된 var x = 'local'; 은 식별자 이름은 같지만 스코프는 다르다. 자바스크립트 엔진은 코드를 실행할때 코드의 문맥을 고려한다. ✅코드의 문맥과 환경 렉시컬환경 : 코드가 어디서 실행되며 주변에 어떤 코드가 있는지 실행 컨텍스트 : 렉시컬 환경(코드의 문맥)을 구현한 것 변수나 함수의 이름과 같은 식별자는 어떤 값을 구별하여 식별해 낼 수 ..
2023.05.08