1. ES6? 자바스크립트와 ECMAScript의 차이

ECMAScript = ECMA-262 규격에 따른 언어

따라서)ECMAScript = ECMA-262라고 봐도 무방하다

자바스크립트 = ECMA-262 규격을 모두 맞추고 범용적으로 사용할 수 있게 만든 언어

2. 변수 선언식 var, let, const의 차이

1. 변수 선언 방식

var = 원조 변수선언방식으로, 위 코드와 같이 선언한 변수가 동일한 이름으로 중복 선언이 가능

var title = 'movie';
console.log(title); // movie

var title = 'movie';
console.log(title); //movie

title = 'music';
console.log(title);//music

let = 중복선언이 불가. 변수에 값을 재할당하는 것은 가능

let title = 'movie';
console.log(title); // movie

let title = 'movie';
console.log(title); 
//Uncaught SyntaxError: Identifier 'title' has already been declared

title = 'music';
console.log(title);//music

const = 중복선언 불가, 재할당도 불가

const title = 'movie';
console.log(title); // movie

const title = 'movie';
console.log(title); 
//Uncaught SyntaxError: Identifier 'title' has already been declared

title = 'music';
console.log(title);
//Uncaught TypeError: Assignment to constant variable

2. 스코프(Scope)

함수레벨 스코프

var = 함수내에서 선언된 변수는 함수 내에서만 유효하고, 함수 내에서는 블록 내외부에 관계없이 유효하다. 함수 외부에서는 참조불가.

function function_level(){
  if(true){
   var a = 123;
   console.log(a); //123 
  }
 console.log(a);
}

function_level(); //123
console.log(a);//ReferenceError: a is not defined

블록레벨 스코프

let, const = 함수, if절 외 for, while, try/catch 등 모든 코드블록 ({..}) 내부에서 선언된 변수는 코드 블록 내부에서만 유효함. 블록 외부부터 참조 불가.