Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

비전공 프론트엔드 개발자

스코프(scope) in javascript 본문

카테고리 없음

스코프(scope) in javascript

JJ_hyun 2022. 5. 12. 13:08

스코프 = 변수의 유효 범위 => 이렇게 생각하면 좋다. 

 

스코프의 특징 

1. 안쪽에서 바깥쪽으로 접근이 가능하다. ( 반대로 바깥쪽에서 안쪽으로는 접근이 안된다. )

=== 함수를 기준으로 바깥에 선언된 변수는 안쪽에서 접근할 수 있지만, 함수 안에서 선언된 변수는 함수 밖에서는 접근할 수 없다.

 

2. 스코프는 중첨이 가능하다. 

=== a함수 안에 b함수 안에 c 함수가 있다고 하면 c함수는 a함수 울타리와 와 b함수 울타리 안에 위치한다. ( 중접된 울타리 )

 

3. 가장 바깥의 스코프는 전역 스코프라고 한다. 그리고 그 울타리 안에 선언된 함수 등등 을 지역 스코프라고 한다. 

=== 위의 예시를 다시 들면, 세개의 함수밖에 없다고 가정했을 때, a함수가 전역 스코프가 될 것이고, b,c 함수는 지역 스코프라는 말이다.

 

4. 지역변수는 전역변수보다 더 높은 우선 순위를 갖는다. 

=== 위의 예시에서 , a함수 안에서 선언된 변수보다, b,c 에서 선언된 변수가 더 높은 우선 순위를 갖는다는 말이다. 

=> a 함수에서 let name = jun 을 선언하고, b함수에서 let name = hyun 을 선언하고 b함수에서 name을 콘솔로 찍어보면

hyun 이라고 출력된다. 

 

스코프의 종류

1. 블록 스코프 ( block scope )

- 중괄호를 기준으로 범위가 지정된다. 

- 단, 화살표 함수는 블록 스코프에 속한다. 

 

2. 함수 스코프 ( function scope ) 

- 함수 선언식 + 함수 표현식 으로 이루어져 있다. 

 

특이점에서 온 변수 선언문 " var "

- 블록 스코프를 무시하고 함수 스코프만 따른다. ( 모든 블록스코프를 무시하는건 아니고, 화살표 함수의 블록 스코프는 따른다. )

- 블록 스코프를 무시하기 때문에 의도한 값과는 다른 값이 출력 될 수 있기 때문에 let 키워드를 추천한다. 

 

값이 변하지 않는 변수라면? " const "

- let 키워드가 동일하게 블록 스코프를 따른다. 

- const 로 선언된 값을 재할당 할 경우 타입 애러가 발생한다. 

 

 

**

'use strict'
=> 문법접 오류가 발생하면 오류를 배출해 달라고 미리 선언하면 편리하다.

 

ler, var, const 등 변수를 선언할때 써야하는 키워드 없이 지역 스코프로 선언을 할 경우,,,,

전역 스코프로 되버리는 불상사가 생길 수 있다. 고로, 이런 부분들을 잡아주기 위해 파일 첫줄에 미리 선언을 

해주면 좋다.