[Node.js] ES2015 (1)
노드 시작하기
ES2015 문법 리뷰 (1)
const와 let
var과 다르게 const와 let은 블록({}
) 스코프이기 때문에 블록 바깥에서 접근이 불가하다.
- const : 값 재할당(
=
) 불가능 / 변수 선언만은 불가능(선언과 동시에 초기화 해줘야 한다.)- const는 값이 아닌 메모리 주소에 대한 참조에 대한 상수이기 때문에 객체의 경우 객체 자체를 변경(재할당) 하는 것은 불가능 하지만 객체 내부의 프로퍼티를 변경하는 것은 가능하다.
- let : 값 재할당(
=
) 가능
객체 리터럴의 변화
키랑 값(변수)이 같은 경우 {data: data, hello: hello}
를 {data, hello}
로 표시할 수 있다.
const newObject = {
sayJS() {...}, // 함수도 키와 값이 같은 경우 축약 가능하다.
sayNode,
[es + 6]: 'Fantastic!' // 동적으로 프로퍼티 이름을 정의할 수 있다.
}
비구조화 할당 (destructuring)
/*
객체의 비구조화 할당
*/
const candyMachine = {
status: {...},
getCandy() {...}
};
const { status, getCandy } = candyMachine;
// 비구조화 할당된 변수에서 this를 사용하려면 bind, call을 사용해서 this를 맞춰줘야 한다.
// 노드에서는 이런 식으로 활용된다.
const {Router} = require('express');
/*
배열의 비구조화 할당
*/
var array = ['nodejs', {}, 10, true];
var node = array[0];
var obj = array[1];
var bool = array[array.length - 1];
// 위 코드를 비구조화 할당을 사용해 아래와 같이 바꿀 수 있다.
const array = ['nodejs', {}, 10, true];
const [node, obj, , bool] = array;
rest 문법 (spread operator)
/* 예시 1 */
const array = ['nodejs', {}, 10, true];
const [node, obj, ...bool] = array;
bool; // [10, true]
/* 예시 2 */
const n = (x, ...y) => console.log(x, y)
// 나머지 인자들이 들어가는 y변수는 실제배열이다.(반면, ES5에서의 arguments[]는 유사배열이다.)
n(5, 6, 7, 8, 9); // 5 [6, 7, 8, 9]
댓글남기기