프로그래밍/자바스크립트
[인프런] 스코프
초코맛동산
2024. 8. 18. 19:39
1. 스코프란?
변수, 함수 생성시 해당 변수, 함수가 갖게 되는 유효 범위
1.1 전역 스코프(Global Scope)
: 어디서든 변수에 접근 가능한 범위
1.2 지역 스코프(Local Scope)
: 지역을 벗어난 곳에서는 접근 불가능한 범위
const num = 10;
function print() {
const num = 100;
console.log(`지역 스코프 ${num}`);
}
print()
console.log(`전역 스코프 ${num}`);
=> print()를 통해 호출된 num은 지역 스코프, 함수 외부의 num은 전역 스코프를 지님.
1.2.1 블록 스코프
: 같은 블록에서만 접근 가능한 범위
function print() {
for(let i = 0; i < 10; i++){
console.log(`블록 스코프 : ${i}`);
}
console.log(i);
}
print();
-> let 키워드는 블록 스코프를 지님. 따라서 for 블록 안의 i는 잘 출력되고, for 블록 밖의 i는 에러가 발생함.
1.2.2 함수 스코프
: 해당 함수 내부에서 접근 가능한 범위
function print() {
for(var i = 0; i < 10; i++){
console.log(`블록 스코프 : ${i}`);
}
console.log(`함수 스코프 : ${i}`);
}
print();
let vs var
공통점)
1. 변수 선언 키워드
차이점)
1. 같은 이름의 변수를 여러번 선언 O, 기존 선언 값은 무시됨.
-> 프로그램상 오류 유발 및 어디서 어떻게 사용되는지 파악이 어려움.
// let 변수 선언 키워드 사용 let num1 = 10; let num1 = 100; console.log(num1);
// var 변수 선언 키워드 사용 var num2 = 20; var num2 = 200; console.log(num2);
2. var는 함수 스코프. (let은 블록 스코프)
=> var는 해당 특징들로 인해 프로그래밍상 여러 오류들을 유발할 수 있어서 잘 사용x