스코프 (Scope)
- 유효 범위
- 동일한 식별자 충돌 방지
- 변수나 함수 선언 위치에 따라 스코프 지님
- 전역 스코프 (global Scope)
- 함수 레벨 스코프 (function-level Scope)
- 블록 레벨 스코프 (block-level Scope)
var | let | const | |
글로벌 스코프 | O | O | O |
함수 레벨 스코프 | O | O | O |
블록 레벨 스코프 | X | O | O |
재선언 | O | X | X |
재할당 | O | O | X |
함수 레벨 스코프 (function-level scope)
- 함수 안에 선언한 변수 => 지역 변수
- 함수 외부에서 해당 변수 호출 시 오류
var strVar = "전역 스코프";
let strLet = "전역 스코프";
const strConst = "전역 스코프";
function fnScopeTest() {
var strVar = "지역 스코프"; // 재선언 및 재할당
let strLet = "지역 스코프";
const strConst = "지역 스코프";
console.log(strVar); // 지역 스코프
console.log(strLet); // 지역 스코프
console.log(strConst); // 지역 스코프
}
fnScopeTest();
console.log(strVar); // 전역 스코프
console.log(strLet); // 전역 스코프
console.log(strConst); // 전역 스코프
블록 레벨 스코프 (block-level scope)
- 블록 내에서 접근 가능한 스코프
- { ··· }
{
var strVar = "지역 스코프";
let strLet = "지역 스코프";
const strConst = "지역 스코프";
}
// 블록 밖에서 문제없이 값이 출력된다.
// var는 블록 레벨이 아닌 함수 레벨 스코프인 큰 영역을 가진다.
console.log(strVar); // 지역 스코프
// ReferenceError가 뜨며 값이 출력되지 않는다
// let, const는 블록 안에 선언된 것에 대해서만 접근할 수 있다.
console.log(strLet);
console.log(strConst);
'Script > JavaScript' 카테고리의 다른 글
[JavaScript] Chapter 12. IIFE (0) | 2022.12.14 |
---|---|
[JavaScript] Chapter 11. 호이스팅 (0) | 2022.12.14 |
[JavaScript] Chapter 09. DOM (0) | 2022.12.12 |
[JavaScript] Chapter 08. 객체 (0) | 2022.12.10 |
[JavaScript] Chapter 07. 화살표 함수 (0) | 2022.12.10 |
댓글