728x90
Scope
스코프(유효범위) 는 , 자바스크립트를 포함한 모든 프로그래밍 언어의 중요한 개념이다.
function add(x,y) {
//매개변수는 함수 몸체 내부에서만 참조할 수 있다.
//매개변수의 스코프는 함수 몸체 내부이다.
console.log(x,y) //2 5
return x + y;
}
add(2,5);
// 매개변수는 함수 내부에서만 참조할 수 있다.
console.log(x,y); // ReferenceError: x is not defined
모든 식별자는 자신이 선언된 위치에 의해 자신이 유효한 볌위, 다른 코드가 자신을 참조할 수 있는 범위가 결정된다.
이 유효 범위가 바로 스코프이다. 즉 스코프는 식별자가 유효한 범위를 말한다.
let x = 'global';
function check() {
let x = 'local';
console.log(x);
}
check();
console.log(x);
check 함수의 바깥 영역과 내부 영역에 같은 이름을 같은 x변수를 선언 후,
x를 참조하면 자바스크립트 엔진이 둘 중 어느 변수를 참조할 것인지를 결정하는 식별자 결정을 한다.
이때 스코프를 통해 어떤 변수를 사용할지를 결정하게 된다.
따라서 스코프란 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이라고도 할 수 있다.
참고로 var 키워드로 선언된 변수는 같은 스코프 내에 중복 선언이 허용된다.
let 과 const는 같은 스코프 내에서 중복 선언을 허용하지 않으므로 부작용을 줄여준다.
( var는 재할당,재정의, 호이스팅, for문 종료시에도 접근 가능, 전역 변수남발 등 문제가 많은 놈이다. 쓰지말자)
스코프의 종류
스코프는 전역 스코프와 지역 스코프로 나눌 수 있다.
코드의 가장 바깥에서 선언한 변수는 전역 변수로 전역 스코프를 가지며 어디서든지 참조할 수 있게된다.지역 변수는 함수 내부에서 지역 스코프를 가지며 자신의 지역 스코프와 하위 지역 스코프에서만 유효하다.
728x90
'JavaScript' 카테고리의 다른 글
[Javascript] 일급 객체 (0) | 2022.02.20 |
---|---|
[Javascript] 스코프 체인과 렉시컬 스코프 (0) | 2022.02.18 |
[Javascript] Reduce 메서드란 ? (0) | 2022.01.25 |
[Javascript] 자바스크립트의 표준화 (0) | 2021.11.15 |
[Javascript] Storage(localStorage, sessionStorage) (0) | 2021.09.03 |