4. ES6
ES6 === ECMAScript 2015
EcmaScript 란?
1. JavaScript 코어를 이루는 스크립트 언어를 의미.(스펙)
2. Ecma 인터내셔널의 ECMA-262 기술 규격에 정의된 표준화된 스크립트 프로그래밍 언어
우리가 흔히 사용하는 JavaScript의 ES 스펙은 ES5(2009) 다.(국내 기준일지도? 현재는 최신문법을 많이 사용한다)
REACT / VUE / ANGULAR 와 같은 프레임워크 및 라이브러리들이 ES6를 기본으로 하고 있습니다.
ES5는 현재 대부분의 브라우저에서 문제없이 지원을 합니다. ES4는 중간에 이슈가 있어서 폐기되고 ES3에서 바로 ES5가 나왔다고 합니다.
6. ES6
ES6 === ECMAScript 2015
2015년 6월 ES6의 최종안인 ES2015를 발표!
여러가지 추가가 되었다..!
Block level scope variables
const
template Literals
Destructuring assignment
Arrow functions
class
module
promise
default parameter
spread operator
symbol
proxy
등..
ES5를 씹어먹고 편의성과 혁신을..!
7. let / const /
block level scope
ES6에 추가된 변수선언 키워드 let, const와 특성을 알아보자.
8. let / const / block level scope
var a = 10;
let b = 200;
var a = 20;
// let b = 300; // has already been declared.
b = 300; //재할당은 가능하지만, var 키워드처럼 중복선언은 허용하지 않는다.
function call() {
if(true) {
var a = '이프문안에 있어!';
let b = 'let b';
console.log(b);
}
console.log(a);
console.log(b); // b is not defined
}
call();
const 변수는 재선언, 재할당 불가능하다.(immutable : 불변성)
반드시, 초기에 정의할 때 값을 할당해줘야 한다.
객체를 const로 참조했을 때, 객체 속성값을 변경할 수 없는 것은
아니다. 참조값을 변하게 하지 않는 것이지 객체 자체를 불변성 있게
freeze 하는거랑은 다르다.
var 변수는 자유롭다. 그래서 막 변경이 될 위험이 있다. let 변수는
var 와 같은 선언방식을 막고 있다. 재정의 될수는 없지만 재할당은
가능하다.
var 변수는 function level scope 를 가지게 된다.
let, const 는 block level scope 를 가지고 있다. 여기서 block 이란
if, for 같은 문법으로 지정된 {} 블록을 의미한다.
const a = 100;
const b = 0;
// b = 10; // Assignment to constant variable
const c = {
num : 9999
};
c.num = 999;
console.log(c.num)