Scope 에 대하여
JavaScript 문법 내용을 기록하기 위한 포스트입니다.
1. Scope 란?
- javascript 변수 또는 함수 선언 시 해당 변수가 유효한 범위를 의미한다.
- 3가지 전역(Global) , 함수(Function), Block(블록) Scope 가 있으며 선언에 따라 유효범위가 다르기 때문에 이해가 필요함
- { } , 함수안에서 사용되지 않아 전역으로 범위가 설정된다.
let a = 3 // 전역변수
function test() {
console.log(a)
}
{
let b = 3 // Block 내 변수
}
console.log(b) // 사용 불가
const a = 1;
if(a === 1) {
let b = 1; // Block Scope 적용
}
for(a in b) {
let c = 1 // Block Scope 적용
}
console.log(b) // 사용불가
console.log(c) // 사용불가
2. var 의 경우 Block Scope 이 적용되지 않는다.
- var 로 선언된 변수가 Block 안에 있어도 전역변수처럼 Scope을 가진다.
- var 로 선언된 변수는 함수에서만 지역변수 즉, Block Scope 을 가진다.
function a() {
var a = 3;
console.log(a); // 3 출력
}
{
var b = 3;
}
console.log(a);
console.log(b); // 3출력