일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOJ
- 프로젝트
- Java
- react
- 꿀팁
- 백준
- javascript
- API
- deep
- axios
- State
- 프로그래머스
- virtual Dom
- 상태 끌어올리기
- 원리
- memory
- DoM
- EventListener
- 상태
- 개발
- Hook
- programmers
- 가상 DOM
- LeetCode
- 유용한 사이트
- Dive
- 요청
- Today
- Total
목록개인 공부/JS (자바스크립트) (15)
탄탄한 기본기!
이터러블 프로토콜을 준수한 객체를 이터러블이라 하며, 이터러블의 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. 1. 빌트인 이터러블 자바스크립트에는 아래와 같은 이터레이션 프로토콜을 준수한 빌트인 이터러블 객체들이 존재한다. Array String Map Set TypedArray arguments DOM Collection 2. 이터러블과 이터레이터 이터러블은 이터러블 프로토콜을 준수한 객체이며, Symbol.iterator를 프로퍼티 키로 직접 메서드를 구현하거나 상속(프로토타입) 받은 객체를 말한다. 즉, 객체의 프로퍼티로 Symbol.iterator가 존재해야지 이터러블인 것이다. const array = [1, 2, 3]; console.log..
심벌은 자바스크립트의 7가지의 타입들(문자열, 숫자, 불리언, undefined, null, 객체, 심벌) 중 하나이며, ES6에 도입되어 사용되고 있다. 1. Symbol 함수 심벌 값은 Symbol 함수를 호출하여 생성해야 하며 리터럴로 생성이 불가능하다. 생성된 심벌 값은 외부로 노출이 되지 않기 때문에 확인할 수 없으며 다른 어떠한 값들과도 절대로 중복되지 않는 유일한 값이다. 그리고 심벌을 생성할 때, 인수로 문자열을 전달할 수 있는데 이 때 문자열은 해당 심벌을 생성해서 구분하기 위한, 즉 디버깅 용도로 사용되며 심벌 값과는 상관이 없다. const mySymbol = Symbol('hello'); console.log(mySymbol); // Symbol(hello) const mySymbo..

Node.js 는 프레임워크가 아니라 자바스크립트를 실행시킬 수 있는 런타임 환경이다. 자바스크립트의 런타임 환경 예전에는 자바스크립트를 실행할 수 있는 환경이 브라우저에만 한정되어 있었다. 하지만 이러한 자바스크립트를 브라우저에서 꺼내와 그 밖에서도 실행할 수 있도록 만들고 싶어 했다. 그래서 나오게 된 자바스크립트 환경이 Node.js이다. 브라우저와 Node.js 브라우저에서는 자바스크립트가 File을 읽을 수는 있지만, update나 write(delete)을 하면 안 된다. 웹 사이트에서 파일을 조작한다는 것은 결국 해킹이다. 즉, 이러한 기능을 제공할 필요가 없기 때문에 원척적으로 파일 컨트롤을 보안 문제 때문에 불허한다. 반면에 Node.js의 경우에는 서버를 개발하는 등의 환경에서 사용되기..
표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. 1. String 생성자 함수 String 객체는 생성자 함수 객체이기 때문에 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. 하지만 보통 String 이 필요할 때는 문자열 리터럴로 바로 생성해 사용하는 경우가 일반적이다. 그리고 만약 new 연산자를 제외하고 String 함수를 사용할 경우, String 객체가 아닌 원시 값을 반환한다. const kim = new String('kim'); // 객체 const park = String('park') const lee = 'lee'; // 원시 값 (리터럴) length 프로퍼티 String 객체는 length 프로퍼티를 가지..
표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다. 1. Date 생성자 함수 Date는 생성자 함수라고 설명했다. 따라서 Date 생성자 함수로 생성할 수 있고, 이렇게 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수 값을 갖는다. 그리고 이 정수 값은 1970년 1월 1일 0시를 기준으로 하며, 이 기준 시각으로부터 현재까지 흐른 시간을 ms 값으로 가지고 있게 된다. 만약 현재 날짜와 시간이 아닌 다른 날짜와 시간을 다루고 싶은 경우엔 Date 생성자 함수에 명시적으로 해당 날짜와 시간 정보를 인수로 지정해줄 수 있다. 이러한 Date 객체를 만드는 방법은 총 4가지가 존재한다. new Date() new Date(ms) new Dat..
Math는 표준 빌트인 객체이며 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. Math는 생성자 함수가 아니기 때문에 Math는 정적 프로퍼티와 정적 메서드만 제공한다. Math 프로퍼티 Math의 정적 프로퍼티는 Math.PI가 존재하며, 원주율의 값을 가진다. Math.PI; // -> 3.141592653589793 Math 메서드 1. Math.abs Math.abs 메서드는 인수로 전달된 숫자의 절댓값(absolute value)을 반환한다. 절댓값은 반드시 0 또는 양수이어야 한다. 만약 숫자가 아닌 경우에는 NaN을 반환한다. Math.abs(-1); // -> 1 Math.abs('-1'); // -> 1 Math.abs(''); // -> 0 Math.abs([]); // -..
Number는 표준 빌트인 객체로, 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다. Number 생성자 함수 Number 객체는 생성자 함수 객체이기 때문에 new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다. 그리고 만약 Number에 인수를 주지 않고 new 연산자와 함께 호출하게 되면 기본 값인 '0'을 가진 Number 객체가 생성되게 된다([[NumberData]] 내부 슬롯에 0을 할당함). const numObj = new Number(); console.log(numObj); // Number {[[PrimitiveValue]]: 0} Number 생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환한 후, [[NumberData]] ..