[JavaScript] Scope
Scope scope란 ‘범위’라는 뜻을 가지고 있습니다. 즉, 스코프란 ‘변수에 접근할 수 있는 범위’를 말합니다. 자바스크립트는 Lexical Scope다. Lexical Scope : 선언된 위치가 상위 스코프를 정한다. Dynamic Scope : 실행 위치가 상위 스코프를 정한다. Lexical Scope 선언된 위치가 상위 ...
Scope scope란 ‘범위’라는 뜻을 가지고 있습니다. 즉, 스코프란 ‘변수에 접근할 수 있는 범위’를 말합니다. 자바스크립트는 Lexical Scope다. Lexical Scope : 선언된 위치가 상위 스코프를 정한다. Dynamic Scope : 실행 위치가 상위 스코프를 정한다. Lexical Scope 선언된 위치가 상위 ...
Prototype, Prototype Chain JavaScript는 프로토타입 기반 언어라고 불립니다. JavaScript 개발을 하면 빠질 수 없는 것이 prototype입니다. prototype이 거의 JavaScript 그 자체이기 때문에 이해하는 것이 어렵고 개념도 복잡합니다. JavaScript도 객체지향 언어입니다. 하지만 자바스크...
Using function to create objects 생성자 함수로 객체 만들기 this 키워드를 통해서 property를 세팅할 수 있다. 생성자 함수로 객체를 만들 때는 꼭 ‘new’ 키워드를 사용해야 한다. function IdolModel(name, year){ this.name = name; this.year = year; ...
Immutable Objects 불변 객체 - JavaScript에서 primitive data type(원시 타입)은 변경 불가능한 값(immutable value)이며, 객체는 변경 가능한 값(mutable value)입니다. immutable을 쓰는 이유는 궁긍적으로 ‘성능’ 때문입니다. mutable value는 값에 대한 메모리 주소를...
property attribute JavaScript의 객체는 key, value만 존재하는 것이 아니라 생각보다 굉장히 섬세한 객체이다. 객체나 클래스에서 선언하는 프로퍼티의 애트리뷰트를 확인해볼 수 있다. 객체의 프로퍼티에는 아래 2가지 종류가 있다. 데이터 프로퍼티 - 키와 값으로 형성된 실질적 값을 갖고 있는 프로퍼티 액세서 프...
1. 제너레이터란? 이터러블이며 동시에 이터레이터 = 이터레이터를 리턴하는 함수 (async가 Promise를 리턴하는 함수듯이, 제너레이터는 이터레이터를 리턴하는 함수다.) 제너레이터 함수를 사용하면 이터레이션 프로토콜을 준수해 이터러블을 생성하는 방식보다 간편하게 구현할 수 있다. (Promise와 async 관계와 비슷하게 보면 된다.) ...
getter와 setter는 객체 지향 프로그래밍에서 사용되는 개념이며, 일종의 메서드라고 보면 된다. 즉, 단어 그대로 getter는 객체의 속성(property) 값을 반환하는 메서드이며, setter는 객체의 속성 값을 설정, 변경하는 메서드라고 보면 된다. 예를 들어 user 라는 객체가 있을 경우, 보통이라면 user.name으로 프로퍼티...
ES6 클래스 문법은 좀 더 JAVA 스럽게 객체 지향적으로 표현하기 위해 추가된 새로운 문법이다. ES5 까지 JavaScript에는 클래스가 없었다. 그래서 프로토타입 체이닝을 통해 클래스 비스무리하게 구현 해왔었는데 ES6 버전에 들어서면서 클래스와 비슷한 구조 문법을 추가하였다. 다만 생김새만 클래스 구조이지, 엔진 내부적으로는 프로토타입 ...
보통의 스크립트에서 에러가 발생하면 스크립트가 즉시 중단되고, 콘솔에 에러가 출력됩니다. 그러나 try…catch문을 사용하면 스크립트가 죽는 걸 방지하고, 에러를 잡아서(catch) 더 합당한 무언가를 할 수 있게 됩니다. try…catch try { // code throw new Error('에러 발생'); } catch (e) { /...
Naming Convention 1-1. 기본사항 변수명은 자체 설명적이어야 함 JavaScript에서는 camelCase, PascalCase를 사용 // bad const value = 'Robin'; const val = 'Robin'; // good const firstName = 'Robin'; 1-2. Components, Cla...