일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비동기 프로그래밍
- 이터러블
- 제너레이터
- 브라우저의 렌더링 과정
- Escape Hatches
- 배열
- async
- 스프레드 문법
- 에러 처리
- 클로저
- 디스트럭처링 할당
- 표현식과 문
- 모듈
- 개발 환경 구축
- Deep Dive
- Ref로 값 참조하기
- ES6 함수의 추가 기능
- rest api
- await
- 데이터 타입
- REACT
- BETA
- js
- Strict Mode
- DEEPDIVE
- 프로미스
- Ref로 DOM 다루기
- Set과 Map
- 싸피
- 코어JS
- Today
- Total
목록Deep Dive (24)
코딩을 쉽게 해보자
1. 배열이란? 여러 개의 값을 순차적으로 나열한 자료구조 배열이 가지고 있는 값을 요소(element)라고 부른다. JS에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다. 구분 객체 배열 구조 프로퍼티 키와 프로퍼티 값 인덱스와 요소 값의 참조 프로퍼티 키 인덱스 값의 순서 X O length 프로퍼티 X O 2. 자바스크립트 배열은 배열이 아니다. 자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조를 말한다. 즉, 배열의 요소는 하나의 데이터 타입으로 통일되어 있으며 서로 연속적으로 인접해 있다. 이러한 배열을 밀집 배열(dense array)이라 한다. JS의 배열은 자료구조에서 말하는 배열과 다르다. 배열의 요소를 각각 위한 메모리 공간은 동일한 ..
1. 함수의 구분 ES6 이전까지 JS 함수는 별다른 구분 없이 다양한 목적으로 사용되었다. 이는 언뜻 보면 편리한 것 같지만 실수를 유발시킬 수 있으며 성능 면에서도 손해다. var foo = function () { return 1; }; // 일반적인 함수로서 호출 foo(); // 1 // 생성자 함수로서 호출 new foo(); // foo {} // 메서드로서 호출 var obj = { foo: foo }; obj.foo(); // 1 ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다. ES6 이전의 모든 함수는 callable이면서 constructor이다. ES6 이전의 모든 함수는 사용 목적에 따라 명확한 구분이 없으므로 호출 방식에 특별..
1. 클래스는 프로토타입의 문법적 설탕인가? JS는 프로토타입 기반 객체지향 언어다. 프로토타입 기반 객체지향 언어는 클래스가 필요 없는 객체지향 프로그래밍 언어다. ES5에서는 클래스 없이도 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속을 구현할 수 있다. ES6에서 도입된 클래스와 생성자 함수는 모두 프로토타입 기반의 인스턴스를 생성하지만 정확히 동일하게 동작 X 1. 클래스를 new 연산자 없이 호출하면 에러, BUT 생성자 함수를 new 연산자 없이 호출하면 일반 함수로서 호출 2. 클래스는 extends와 super 키워드 제공 3. 클래스는 호이스팅이 발생하지 않는 것처럼 동작 BUT 함수 선언문으로 정의된 생성자 함수는 함수 호이스팅이, 함수 표현식으로 정의한 생성자 함수는 변수 호이..
클로저는 JS의 고유의 개념 X 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성 클로저는 JS의 고유의 개념이 아니므로 클로저의 정의가 ECMAScript 사양에 등장하지 않는다. MDN에서는 클로저에 대해 다음과 같이 정의한다. A closure is the combination of a function and the lexical environment within which that function was declared 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. const x = 1; function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10 } innerFunc()..