객체 키를 가진 데이터 여러개를 하나의 엔티티에 저장할 때 사용배열 컬렉션에 데이터를 순서대로 저장할 때 사용 구조 분해 할당 객체나 배열을 변수로 '분해'할 수 있게 해주는 특별한 문법 분해는 파괴를 의미하지 x배열 분해하기let arr = ["Bora", "Lee"]let [firstName, surname] = arr;alert(firstNAme); // Boraalert(surname); // Lee 인덱스를 이용해 배열에 접근하지 않아도 변수로 이름과 성을 사용 가능split같은 반환 값이 배열인 메서드를 함께 사용해도 좋음let [firstName, surname] ="Bora Lee".split(' '); 쉼표를 사용해 요소 무시 가능let [firstName, ,title] = ["Juli..
백틱을 사용하면 문자열을 여러 줄 걸쳐 작성 가능let guestList = `손님: * John * Pete * Mary`;\n을 사용하면 작은 따옴표나 큰 따옴표로 여러 줄 문자열 만들 수 있다.let guestList = "손님:\n * John\n * Pete\n * Mary"; 따옴표를 사용할때는 \를 붙여야 한다. 그렇지 않으면 해당 따옴표가 문자열을 닫는 용도로 사용된 것이라 해석할 수 있기에length문자열 길이를 알 수 있는 프로퍼티이다.(함수가 아니기에 ()를 붙일 필요 없다.)str.charAt()을 이용하면 특정 글자에 접근 가능let str = `Hello`;// 첫 번째 글자alert( str[0] ); // Halert( str.charAt(0) ); // Hfor...of를 ..
할당 연산자는 우변을 값을 좌변의 변수에 할당var score; // 변수 선언score = 80; // 값의 할당
Iterable(이터러블)은 순회 가능한 값을 의미한다.
스프레드 연산자: 스프레드 연산자를 이용해서 새로운 배열을 구축하거나 함수에 다수의 값을 전달한다.이터러블: 배열, 문자열, map, set (개체는 아니다.)// Iterables: arrays, strings, maps, sets. Not objectsconst str = 'Jonas';const letters = [...str, '', 'S.'];console.log(letters); // ['J', 'o', 'n', 'a', 's', '', 'S.']// 스프레드 연산자는 배열을 만들때나 함수에 값을 전달할 때만 사용할 수 있다.console.log(...str); // J o n a sconsole.log('j', 'o'); // j o console.log(...str)와 console.log..
스프레드 문법(spread syntax)(전개 문법) ...은 하나로 뭉쳐 있는 열 값들의 집합을 펼쳐서 개별적인 값들의 목록을 만든다. Array, String, Map, Set, Dom 컬렉션(NodeList, HTMLCollection), arguments와 같이 for...of 문으로 순회할 수 있는 이터러블에 한정 // ...[1, 2, 3]은 [1, 2, 3]을 개별 요소로 분리한다.(->1, 2, 3) console.log(...[1, 2, 3]); // 1 2 3 // 문자열은 이터러블이다. console.log(..."Hello"); // H e l l o // Map과 Set은 이터러블이다. console.log( ...new Map([ ["a", "1"], ["b", "2"], ]) ..
클로저(closure) 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조함(출처: MDN) const x = 1; function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10 } innerFunc(); } outerFunc(); outerFunc 함수 내부에서 중첩 함수 innerFunc가 정의되고 호출되고 있다. 중첩 함수 innerFunc의 상위 스코프는 외부 함수 outerFunc의 스코프다. => 중첩 함수 innerFunc 내부에서 자신을 포함하고 있는 외부 함수 outerFunc의 x변수에 접근 가능 innerFunc 함수가 ou..
실행 컨텍스트 실행 컨텍스트를 제대로 이해하면 다음과 같은 내용을 이해할 수 있다. 스코프를 기반으로 식별자와 식별자에 바인딩 된 값(식별자 바인딩)을 관리하는 방식 호이스팅이 발생하는 이유 클로저의 동작 방식 태스크 큐와 함께 동작하는 이벤트 핸들러 비동기 처리의 동작 방식 소스코드 타입 ECMAScript 사양은 소스 코드를 4가지 타입으로 구분 4가지 타입의 소스코드는 실행 컨텍스트를 생성 소스코드의 타입 설명 전역 코드(global code) • 전역에 존재하는 소스코드. • 전역에 정의된 함수, 클래스 등의 내부 코드는 포함 x 함수 코드(function code) • 함수 내부에 존재하는 소스코드. • 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함 x eval 코드(eval code..
자바스크립트 객체의 분류 표준 빌트인 객체 ECMAScript 사양에 정의된 객체 언제나 사용 가능 표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공 => 별도의 선언 없이 전역 변수처럼 언제나 참조 가능 호스트 객체 ECMAScript 사양에는 정의되어 있지 않지만 자바스크립트 실행 환경에서 추가로 제공되는 객체 사용자 정의 객체 표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체 표준 빌트인 객체 Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스 생성 가능한 생성자 함수 객체 생성자 함수 객체인 표준 빌트인 객체는 프로토 타입 메서드와 정적 메서드를 제공하고 생성자 함수 객체가 아닌 표준 빌트인 객체는 정적 메서드만 제공 // Stri..
strict mode function foo() { x = 10; } foo(); console.log(x); // 10 \전역 스코프에도 x 변수의 선언이 존재하지 않기 때문에 ReferenceError를 발생할 것같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용 가능 위의 현상을 암묵적 전역이라고 한다. 잠재적인 오류를 발생시키기 어려운 개발 환경을 만들고 그 환경에서 개발하는 것이 해결책 이를 지원하기 위해 ES5부터 strict mode(엄격 모드)가 추가되었다. strict mode는 자바스크립트 언어의 문법을 더 엄격히 적용하여 오류 발생 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 ..