개념정리
var : 변수 선언자이고, 해당 변수가 속한 범위(scope) 최상단으로 올려버리는 현상이 생긴다. 불필요하게 전역 변수를 선언한다. (오류발생 위험 커짐)
let : 변수 선언자이고, const 변수 선언자와 같이 블록 스코프를 가지므로, 블록 밖에서는 변수에 접근을 할 수 없다.
const : 변수 선언자이고, var 변수 선언자와 같이 블록 스코프를 가지므로, 블록 밖에서는 변수에 접근을 할 수 없다.
- let 변수 선언자와 const 변수 선언자는 서로 차이점이 존재한다. const는 한 번 값을 할당하면 다른 값을 할당할 수 없다. (다른 값을 할당하려고 하면 Error 발생)
블록이란? JavaScript에서 {}(중괄호)[Ex. function, if, for, while 문]를 블록이라고 부른다.
var VS let, const 차이점 (블록 스코프)
Code
if (true) {
var x = 3;
}
console.log(x); // 3
if (true) {
const y = 3;
}
console.log(y); // Uncaught ReferenceError: y is not defined
Console
3
console.log(y); // Uncaught ReferenceError: y is not defined
^
ReferenceError: y is not defined
let과 const는 블록 밖에서 안을 볼 수 없다.
let VS const 차이점
Code
const a = 0;
a = 1; // Uncaught TypeError: Assignment to constant variable.
let b = 0;
b = 1; // 1
const c; // Uncaught SyntaxError: Missing initializer in const declaration
Console
a = 1; // Uncaught TypeError: Assignment to constant variable.
^
TypeError: Assignment to constant variable.
const c; // Uncaught SyntaxError: Missing initializer in const declaration
^
SyntaxError: Missing initializer in const declaration