* 스코프(Scope)
- 변수를 참조할 수 있는 유효한 범위 // 식별자(변수, 함수, 클래스 이름)가 유효한 범위
- 선언된 위치에 따라 유효 범위가 결정됨
- { } 블럭 안의 변수는 블럭 안에서만 유효
- scope가 존재하는 이유?? 1.이름 충돌 방지 2.메모리 절약
- 변수는 최대한 필요한 곳에서 정의해야 한다.
- 코드 블럭: { }, if() { }, for() { }, function() { }
* 스코프(Scope)예시 코드
- 블럭 외부에서는 블럭 내부의 변수를 참조할 수 없다.
- 함수 외부에서는 함수 내부의 변수를 참조할 수 없다.
- 함수 외부에서는 함수의 매개변수를 참조할 수 없다.
// 블럭 외부에서는 블럭 내부의 변수를 참조할 수 ❌
{
const a = 'a';
}
console.log(a);
const b = 'b';
// 함수 외부에서는 함수 내부의 변수를 참조 ❌
function print() {
const message = 'Hello World';
console.log(message);
}
console.log(message);
// 함수 외부에서는 함수의 매개변수를 참조 ❌
function sum(a, b) {
console.log(a, b);
}
console.log(a, b);
* 스코프(Scope) 퀴즈
- 변수 x, y, text를 출력하게 되면 어떤 값이 출력이 될까?
{
const x = 1;
{
const y = 2;
console.log(x);
}
console.log(x);
// console.log(y);
}
const text = 'global'; // 전역 변수, 전역 스코프 (글로벌 변수, 글로벌 스코프)
{
const text = 'inside block1'; // 지역 변수(로컬변수), 지역 스코프(로컬스코프)
{
const text = 'inside block2';
console.log(text);
}
}
'Study > JavaScript' 카테고리의 다른 글
[JavaScript_study] 렉시컬 환경(Lexical Environment) (0) | 2022.04.14 |
---|---|
[JavaScript_study] 가비지 컬렉션 (garbage collection) (0) | 2022.04.14 |
[JavaScript_study] fetch api (0) | 2022.04.13 |
[JavaScript_study] JSON: JavaScript Object Notation (0) | 2022.04.13 |
[JavaScript_study] async/await (0) | 2022.04.13 |