ECMAScript = ECMA-262 규격에 따른 언어
따라서)ECMAScript = ECMA-262라고 봐도 무방하다
자바스크립트 = ECMA-262 규격을 모두 맞추고 범용적으로 사용할 수 있게 만든 언어
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
함수레벨 스코프
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 등 모든 코드블록 ({..}) 내부에서 선언된 변수는 코드 블록 내부에서만 유효함. 블록 외부부터 참조 불가.