해말그미의 코딩공부

스코프(Scope) 본문

자바스크립트

스코프(Scope)

해말그미 2023. 3. 3. 00:30

<스코프(Scope)>

스코프는 변수 접근 규칙에 따른 유효범위이다.

greeting 변수는 바깥에 정의되어 있으므로, 함수 안쪽에서 사용할 수 있습니다. 따라서 greeting 변수와 firstName 변수의 조합에 의해 'Hello Josh' 문자열이 출력됩니다.

반면에 firstName 변수는 함수 안쪽에 정의되어 있으므로 함수 바깥쪽에서는 접근이 불가능합니다. 따라서 ReferenceError를 냅니다.

 

범위가 중괄호(블록) 또는 함수에 의해 나누어지고, 그 범위를 스코프라고 부른다고 했습니다. 여기서 우리가 알 수 있는 규칙은 바로 다음과 같습니다. 바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능합니다. 반면에, 안쪽에서 선언한 변수는 바깥쪽 스코프에서는 사용할 수 없습니다.


식별자 결정 : 자바스크립트 엔진은 스코프를 통해서 어떤 변수를 참조할 것인지 결정한다.

스코프의 종류

전역 스코프 : 전역의 코드의 가장 바깥 영역으로, 여기서 선언된 변수는 전역 변수가 된다. 전역 변수는 어디서든 참조 가능하다.

지역 스코프 : 지역은 함수 코드의 내부 영역으로, 여기서 선언된 변수는 지역 변수가 된다. 지역 변수는 자신의 지역 스코프 및 하위 지역 스코프에서 참조 가능하다.

스코프의 정의와 규칙

지역 변수는 전역 변수보다 더 높은 우선순위를 가집니다.

 

첫번째 출력 - 김코딩

두번째 출력 - 박해커

세번째 출력 - 김코딩

 let  키워드를 선언하지 않았을 때

 

첫번째 출력 - 김코딩

두번째 출력 - 박해커(name = '박해커'가 선언되어 있지 않으니까 '김코딩'에 재할당 된 것)

세번째 출력 - 박해커

 

//'박해커'라는 값으로 할당하고 있는 name 변수는 전역에 선언된 name 변수를 그대로 사용하겠다는 의미입니다.

지역 스코프에서 새로 선언되지 않으면 그냥 같은 변수입니다.

따라서 showName 함수가 실행되기 전, 처음에는 '김코딩'을 출력하고, 그 이후에는 전역변수 name의 값이 바뀌기 때문에 두 번째 및 세 번째 출력에 '박해커'가 출력됩니다.


스코프 종류

블록 스코프(block scope) - 중괄호를 기준으로 범위가 구분됩니다.

함수 스코프(function scope) - function 키워드가 등장하는 함수 선언식 및 함수 표현식은 함수 스코프를 만듭니다.

var 키워드는 for 문이 만들어낸 블록 스코프를 무시합니다.

const 라는 키워드도 있습니다. 변하지 않는 값, 곧 상수(constant)를 정의할 때에는 const를 이용합니다. const는 값의 재할당이 불가능합니다. 값을 재할당할 경우 TypeError를 내므로, 의도하지 않은 값의 변경을 막을 수 있습니다.

 

 

'자바스크립트' 카테고리의 다른 글

자바스크립트 기초  (0) 2023.05.26
삼항 연산자  (0) 2023.05.06
고차 함수  (0) 2023.04.24
원시 자료형과 참조 자료형  (1) 2023.03.02
배열 메소드 (Array methods)  (0) 2023.03.01
Comments