본문 바로가기

javascript30

[javascript] ES6 최신 문법 3 _ spread spread ... 스프레드는 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만드는 문법이다. 스프레드 문법을 사용할 수 있는 대상은 이터러블에 한정된다. let arr = [1, 2, 3, 4]; console.log(...arr); //1 2 3 4 let a = { ...arr }; let b = [...arr]; console.log(a); //{ '0': 1, '1': 2, '2': 3, '3': 4 } console.log(b); //[ 1, 2, 3, 4 ] let arr1 = [2, 3, 4]; let arr2 = [5, 6, 7]; let merged = arr1.concat(arr2); //ES5에서 배열 합치기 const newMerged = [...arr1, .. 2022. 10. 12.
[javascript] ES6 최신 문법 2 _ Iteration protocol Iteration protocol 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위한 규칙이다. ES6 이전의 순회 가능한 데이터 컬렉션(배열, 문자열, 유사 배열 객체, DOM 컬렉션 등)은 통일된 규칙 없이 for문, for in문, forEach 메서드 등으로 순회할 수 있었다. ES6에서는 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수 하는 객체로 통일하여 for of문, 스프레드 문법, 배열 구조 분해 할당의 대상으로 사용할 수 있도록 일원화했다. 이터러블Iterable 프로토콜과 이터레이터Iterator 프로토콜 Symbol.iterator(Well-known Symbol > 자바스크립트가 기본으로 제공하는 빌트인 심볼 값이다.)를 프로퍼티 키로 사용한 메서드를 직접 구현하.. 2022. 10. 12.
[javascript] ES6 최신 문법 1 _ Symbol Symbol ES6 이전의 자바스크립트 데이터 타입은 문자열, 숫자, 불리언, undefined, null, 객체 6가지 타입이 있었다. 심볼은 새롭게 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 심볼 값은 심볼 함수를 호출하여 생성하고, 이때 생성된 심볼 값은 외부로 노출되지 않아 확인할 수 없다. const symbol = Symbol('yeonmi'); console.log(typeof symbol); //output: symbol console.log(symbol); //output: Symbol(yeonmi) 심볼에는 new 키워드를 붙이지 않고 생성하며, 괄호 안에 쓰는 것은 생성된 심볼 값에 대한.. 2022. 10. 12.
[javascript] 동기vs비동기 들어가기에 앞서... 운영체제의 역할 CPU 스케줄링과 프로세스 관리: cpu 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마만큼 할당해야 하는지 관리한다. 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다. 프로세스의 메모리 구조 스택: 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정된다. 힙: 힙은 동적 할당할 때 사용되며 런타임 시 크기가 결정된다. 데이터 영역: 데이터 영역은 전역변수, 정적변수가 저장되고, 정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들.. 2022. 10. 10.
[javascript] 호이스팅(hoisting)과 일시적 사각 지대(TDZ) + var, let, const var, let, const 자바스크립트에서 변수를 선언하는 키워드는 세 가지이다. var는 최근 사용을 지양하는 키워드이지만 javascript info의 문구를 그대로 가져와 표현하자면 '오래된 스크립트에서 당신을 기다리고 있는 괴물 같은 존재'이다. 우선, var는 블록 스코프가 없다. 블록 스코프가 없다는 것은 블록 밖에서도 var에 접근할 수 있다는 말이다. if (true) { var test = true; } alert(test); // true(if 문이 끝났어도 변수에 여전히 접근할 수 있음) var는 변수의 중복 선언도 가능하다. var user = "Pete"; var user = "John"; // 이 "var"는 아무것도 하지 않습니다(이전에 이미 선언됨). // ...에러 또한 .. 2022. 10. 5.