keyword |
scope |
|
const |
전체 |
var 와 같으나 한번 값이 할당되면 바꾸지 못함 |
var |
function 내 |
서브블럭내에서 다시 같은 이름의 변수를 할당하여도 똑같은 변수를 가르킨다. |
let |
블럭( { } ) 내 |
블럭내에 선언하면 블럭을 빠져나오면 사라짐 |
// case 1
function varScoping() {
var x = 1;
if (true) {
var x = 2;
console.log(x); // will print 2
}
console.log(x); // will print 2
}
// case 2
function letScoping() {
let x = 1;
if (true) {
let x = 2;
console.log(x); // will print 2
}
console.log(x); // will print 1
}
// case 3
function nestedScopeTest() {
if (true) {
var x1 = 1;
let x2 = 2;
console.log(x1); // will print 1
console.log(x2); // will print 2
if (true) {
console.log(x1); // will print 1
console.log(x2); // will print 2
}
}
console.log(x1); // will print 1
console.log(x2); // will throw an error
}