반응형
Scope
범위, 영역을 뜻하는 말로 변수 접근 규칙에 따른 유효 범위
- 자바스크립트는 기본적으로 함수가 선언되는 동시에 자신만의 Scope를 갖음
- 그 범위를 벗어나면 오류 발생 ❗️
지역 변수(Local variable)
function solve() {
let x = 3; // 지역 변수
console.log(x);
}
solve(); // ✅ OK
console.log(x)
// ❌ 에러 발생
// 변수 x의 스코프는 solve() 함수 내에서만이다.
// 변수가 유효한 범위 내에 있지 않기 때문에 정의되지 않았다는 오류 발생
- { } 중괄호로 감싼 코드를 블록문(Block Statement)
- 블록문 안에 선언된 변수를 로컬 변수 혹은 지역 변수(Local variable)
- 지역 변수는 블록문 내에서만 사용할 수 있는 변수
전역 변수(Global variable)
let x = 3; // 전역 변수
function solve() {
console.log(x);
}
solve(); // ✅ OK
console.log(x); // ✅ OK
- 블록문 밖에서 선언된 변수는 블록문 안에서도 사용 가능 → 글로벌 변수 혹은 전역 변수(Global variable)
지역 변수와 전역 변수의 우선순위 ?!
let x = 3;
function solve(){
let x = 5;
console.log(x);
}
solve(); // ✅ 5
console.log(x) // ✅ 3
- 블록문 내부에서 선언된 지역 변수가 있는지를 먼저 확인
- 있으면 그 지역 변수를 사용하고, 없을 경우 전역 변수 사용
즉, 지역 변수는 함수 내에서 전역변수 보다 더 높은 우선순위를 가진다!
변수를 정의하는 키워드 (var VS let VS const)
- 자바스크립트는 기본적으로 함수 단위로 자신만의 scope를 가짐
for (let i = 0; i < 5; i++) console.log(i);
console.log(i)// ❌ 에러 발생
for (var i = 0; i < 5; i++) console.log(i);
console.log(i)// ✅ 5
- `var`: 변수 선언 시 block문은 없다고 생각하고 코드가 동작되며, for 안에서 선언하더라도 순선대로 코드 실행됨
- 되도록이면 사용하지 않도록 함
- 함수 스코프(function-scope)
- `let`: 한번 할당된 변수 값을 재이용해서 다른 값으로 할당할 일이 생겼을 때 사용하기 좋음
- 블록 스코프(block-scope): 주어진 코드 블록 안에서만 사용이 가능하며, 밖에서는 접근할 수 없음
- `const` : 값이 변하지 않는 상수를 정의할 때 사용내가 이미 할당한 값을 보호하고 싶을 때 사용
let, const의 예시 코드
let a = 10;
if (true){
let a = 20;
console.log(a); // 20
}
console.log(a); // 10
var a = 10;
if (true){
var a = 20;
console.log(a); // 20
}
console.log(a); // 20 -> 함수 안의 변수가 밖에도 영향을 미침
( •̀ω•́ )و✧ 한 줄 컷 !
그렇다면 마지막 정리하는 시간 ~ 두둥 탁 ~!
면접관이 "전역변수와 지역변수는 각각 무엇이며, 어떤 경우에 사용하는지 설명해주세요" 라고 말한다면 ?!
전역변수는 함수 바깥에 선언하여 클래스 전체에서 사용 가능한 변수입니다.
여러 메소드에서 공통적으로 사용할 수 있습니다.
지역 변수는 함수 안에 선언되어 해당 함수 속에서만 사용 가능한 변수입니다,
지역 변수는 해당 메소드가 호출되어 메모리를 할당 받은 후 종료되면 소멸되어 다시 사용할 수 없습니다.
대충 이렇게 설명하면 좋을 것 같다 ~! 화이팅이다 !! 끝 !
반응형
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[JS] 이벤트의 모든 것 : 이벤트 핸들러, 버블링, 캡쳐링 (1) | 2025.02.20 |
---|---|
[JS] Closure(클로저)란? (1) | 2025.02.20 |
Node.js readline 모듈이란? (5) | 2024.10.13 |