Vue [02] Vue.js를 위한 ES6
let arr = [10, 20, 30, 40];
let [e1, e2, e3] = arr;
console.log(e1, e2, e3); // 10 20 30
[1] ES6소개
◈ ES6(EcMAScript6)
[2] let과 const
◈ var변수의 호이스팅
- var변수는 함수 단위로 호이스팅 되므로 블록 단위로 동작하지 않음 => 진정한 의미의 지역변수가 아님
- 변수 선언 여러번 가능함
* 호이스팅: JavaScript에서 변수와 함수 선언이 코드 실행 전에 최상단으로 끌어올려지는 현상
=> var은 비권장
// var의 변수 호이스팅
console.log(a); // undefined
var a = 10;
console.log(a); // 10
◈ let 변수
- ES6에서 도입된 블록 단위의 변수 선언 방식으로 호이스팅을 지원하지 않음 ( 유효 범위가 블록 단위 )
- 권장되는 변수 선언 방식
◈ const 변수
- 값 변경이 불가 => 상수를 선언할 때 주로 사용
- 블록 단위 범위(scope)를 가짐
- 참조 변수의 경우 참조는 변경 불가하지만 필드는 변경 가능함
const user = { name: 'bia', age: 5 };
user.name = 'Bia';
console.log(user.name); // Bia
user = { name: 'darong', age: 6 }; // 에러
[3] 기본 파라미터와 가변 파라미터
◈ 기본 파라미터(Default Parameter)
- 함수 호출때 인수 생략시 가지는 기본값을 지정하는 방식으로, 반드시 뒷부분에서만 지정 가능함
function sum(x, y = 0) {
return x + y;
}
console.log(sum(3)); // 3
◈ 가변 파라미터(Rest Parameter)
- 함수 호출때 전달하는 파라미터 개수를 가변적으로 사용 가능
- 매개변수 앞에 ...을 지정하여 사용하며, 마지막 매개변수 1개에만 지정 가능
function userInfo(name, age, ...favoriteColors) {
console.log(`name: ${name}`);
console.log(`age: ${age}`);
console.log(favoriteColors);
}
userInfo('bia', 5, 'pink', 'green', 'skyblue');
[4] 구조분해 할당
◈ 구조분해 할당(Destructing Assignment)
- 배열, 객체 값 추출 => 한번에 여러 변수에 할당
[5] 화살표 함수
◈ 화살표 함수의 형식
- 기존 함수 표현식 간결화
- 함수 본체가 한줄 문장인 경우 => 중괄호( { } ) 생략, return 생략 가능 (자동 리턴)
◈ 자바스크립트의 this
- 메서드/함수 호출될때마다 현재 호출중인 메서드 보유한 객체가 this 가 됨
- 현재 호출중인 메서드 가진 객체 없으면 전역 객체가 this가 됨
* 전역 객체: 브라우저에서는 window 객체를 의미
◈ 자바스크립트의 this 지정
- bind(): 지정한 객체 this로 미리 연결(binding)한 새로운 함수 리턴 / this가 아예 바뀜
- apply(), call(): 지정한 객체 this로 연결한 후 함수 직접 호출 / 이번 한번만 this로 바뀜
◈ 화살표 함수에서의 this
- 함수 정의하는 영역의 this 그대로 전달
[6] 새로운 객체 리터럴
◈ ES6 객체 리터럴
- 변수명과 객체 속성명이 일치하면 변수명만 제시가능
- 메서드의 경우 function 키워드 없이 바로 선언 가능
[7] 템플릿 리터럴
◈ 템플릿 리터럴(Template Literal)
- ` `(백틱)으로 묶인 문자열에서 템플릿 대입문 ${표현식}으로 동적으로 문자열 끼워 구성함
- 개행문자 포함가능
- 여러줄 작성 가능
[8] 모듈
◈ ES6 모듈
- 모듈: JS 코드 포함하고 있는 파일, import, export 로 모듈 가져오기/내보내기 가능
- 모듈 내부에 선언된 모든 변수/함수/객체/클래스는 로컬(local)
- export : 여러개 값/함수 내보낼 때 사용, import 할 때 반드시 동일한 이름으로 가져와야 함 (as로 이름 바꿀 수 있음)
- export default : 하나의 값/함수만 내보낼 때 사용, import 할 때 이름 자유롭게 설정 가능
예제 01)
또는
로 모듈을 내보내고,
로 원하는 모듈만 가져오면 됨
[9] Promise
◈ Promise 객체
- 비동기 처리 지원
- 오류 처리는 resolve, reject 이용
const p = new Promise((resolve, reject) => {
setTimeout(() => {
let num = parseInt(Math.random() * 10);
if (num >= 5) {
reject('생성된 숫자가 5 이상 - ' + num);
}
resolve(num);
}, 2000);
});
p.then((result) => {
console.log('처리결과: ', result);
}).catch((e) => {
console.log('오류: ', e);
});
console.log('##Promise 객체 생성');

[10] 전개연산자
◈ 전개연산자(spread operator)
- ...연산자 => 객체/배열 요소를 분해된 값으로 전달, 기존 값 복사 또는 새로운 항목 추가시 사용
let arr1 = [10, 20, 30];
let arr2 = [...arr1, 40];
console.log(arr2); // [ 10, 20, 30, 40 ]
[11] Proxy
◈ Proxy
- 객체 속성을 읽거나 설정하는 작업을 가로채기 위해 래핑할 수 있도록 하는 객체
- 반응성(reactivity) 지원을 위함