남과 같이 해선 남 이상이 될 수 없다.

JavaScript

[Javascript] 스코프 Scope

맨동 2022. 2. 14. 17:29
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