[JavaScript]스코프를 배워보자

Jes·2022년 5월 12일
2

🔊 스코프 (scope)

이름이 중복된 2개의 변수 중 어떤 변수를 참조해야 하는가? 자바스크립트는 어떻게 변수를 식별하는 것일까?
스코프는 참조 대상 식별자 (변수, 함수의 이름과 같이 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다

✔ 선언과 키워드 let, const,var

💡 소코프의구분

전역 스코프(Global scope) : 바깥 스코프 라고하며 어디에서든 참조 할수있다.
지역 스코프(Local scope) : 안쪽 스코프 라고하며 블록 안, 함수 내에서만 참조 할수있다.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
전역 변수(Global variable) : 바깥쪽 전역에서 선언된 변수 어디든 참조 가능하다.
지역 변수(Local variable) : 안쪽 지역내에 선언된 변수 안에서만 참조 가능하다.

🔍 스코프의 특징

🔹 자바스크립트의 스코프는 변수에 접근할 수 있는 유효범위이다.
🔹 바깥쪽 스코프에서 선언한 변수는 안쪽에서 사용가능하다
🔹 안쪽 스코프에서 선언한 변수는 바깥쪽에서 사용불가다.
🔹 스코프는 중첩이 가능하다.
🔹 가장 바깥은 전역스코프라 하고 나머지는 지역스코프다
🔹 지역 변수가 전역변수보다 우선순위가 더 높다.

🔍 블록스코프와 함수 스코프 (block scope & function scope)

🔹 중괄호를 기준으로 범위가 구분된다
🔹 function 을 제외한 if나 for 등의 '{ }' 안에 있는 범위를 블록 스코프
🔹 function{ } <- 안에있는 범위를 함수 스코프
🔹 var은 블록스코프를 무시한다.

변수재할당재선언유효범위
let가능불가블록 스코프 및 함수 스코프
const불가불가블록 스코프 및 함수 스코프
var가능불가함수스코프

let const 와 var의 차이점중 큰것은 유효범위

if(true){
let userName = 'Kimcoding'
console.log(userName); //'Kimcoding'
}
console.log(userName); //ReferenceError: userName is not defined

위 예제에서 전역에 선언된 변수 x는 어디에든 참조할 수 있다. 하지만 함수 foo 내에서 선언된 변수 x는 함수 foo 내부에서만 참조할 수 있고 함수 외부에서는 참조할 수 없다. 이러한 규칙을 스코프라고 한다.

✔ 블록안에서 선언한 변수는 오직 블록안에서만 접근이 가능하다.

🔍 렉시컬 스코프 (Lexical scope)

함수의 상위 스코프를 결정하는 방식으로,
함수를 어디서 선언하였는지에 따라 상위 스코프를 결정하는 것이다.
자바스크립트를 비롯한 대부분의 프로그래밍 언어는 렉시컬 스코프를 따른다.

profile
Escape Newbie

0개의 댓글