Learn Scope, Hoisting
Script
/**현재 페이지에서 실행한 자바스크립트 코드(개발자도구로 결과 확인 가능)*/
// 전역, 함수 스코프 예시
console.log("\nFunction Scope Example:");
var globalVar = "I am global";
function exampleFunction() {
var functionVar = "I am in a function";
if (true) {
let blockLet = "I am in a block";
console.log(blockLet); // 접근 가능
}
console.log(functionVar); // 접근 가능
try {
console.log(blockLet); // ReferenceError
} catch (e) {
console.log(e.message); // blockLet is not defined
}
}
exampleFunction();
console.log("Global Scope Example:");
console.log(globalVar); // 접근 가능
console.log("\nHoisting Example:");
try{
console.log(functionVar); // ReferenceError
}catch(e){
console.log(e.message); // functionVar is not defined
}
// 블록 스코프 예시
// let, const는 블록 스코프를 가짐
console.log("Block Scope Example:");
for (let i = 0; i < 3; i++) {
console.log(i); // 0, 1, 2
}
try {
console.log(i); // ReferenceError
} catch (e) {
console.log(e.message); // i is not defined
}
// var는 함수 스코프를 가짐(블록 스코프 아님)
console.log("Var Scope Example:");
for (var j = 0; j < 3; j++) {
console.log(j); // 0, 1, 2
}
console.log("var j after loop:");
console.log(j); // 3 (var는 함수 스코프이므로 접근 가능)