I. Scope
- var : function scope
- let : block scope
Example
{
var a = 1;
let b = 1;
}
document.write(a); // O
document.write(b); // X
Example
i : global variable
var funcs = [];
for (var i = 0; i < 3; i++){
funcs[i] = function(){
document.write(i + "<br>");
}
}
for (var j = 0; j < 3; j++){
funcs[j]();
}
i : (for loop block's) local variable
let funcs = [];
for (let i = 0; i < 3; i++){
funcs[i] = function(){
document.write(i + "<br>");
}
}
for (let j = 0; j < 3; j++){
funcs[j]();
}
II. Hoisting (인터프리터가 변수와 함수의 메모리 공간을 미리 할당하는 것)
- var, let 모두 hoisting은 한다
- var : undefined로 초기화
- let : 초기화하지 않음
Example
document.write(a + "<br>"); // undefined
var a = 1;
document.write(b + "<br>"); // ReferenceError
let b = 1;
III. Redeclaration
- var : 재선언 가능
- let : 재선언 불가능
Example
var x = 1;
var x = 2; // Work!
let y = 1;
let y = 2; // SyntaxError
Reference
https://stackoverflow.com/questions/762011/what-is-the-difference-between-let-and-var
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
Prototype (0) | 2022.06.04 |
---|