let, const, var (feat.scope)

TEDDY·2022년 11월 16일
0

CODECAMP

목록 보기
12/53
post-thumbnail

scope

: 우선 스코프란, "범위"라고 해석 할 수 있다.
js에서도 범위란 의미를 가지며 좀 더 접근해서 보자면, "식별자 접근 규칙에 따른 유효 범위"라고 할 수 있다. 여기서 식별자는 "변수", "함수", "클래스"를 말하며 범위를 나누는 기준은 중괄호(블록) 또는 함수에 의해 나눠진다. 나눈 범위를 우리는 스코프라고 부른다.

스코프의 종류에는 한번 지정하면 모든곳에서 사용 할 수 있는 전역 스코프(Global scope)와 블록이나 함수 내부에 선언하여 특정 부분에서만 사용 할 수 있는 지역 스코프(Local scope)가 있다.

전역 스코프(Global scope)
: 전역 스코프는 블록이나 함수 바깥에 선언 함으로서 어느 위치에서 불러올수 있다. 하지만 이점을 반대로 생각하면 다른곳에서 선언된 변수를 변경하면 바깥에 선언된 변수도 같이 변경 되기 때문에 이 점을 유의해서 사용해야 한다.

지역 스코프(Local scope)
: 지역 스코프는 블록이나 함수 안쪽에 선언 함으로서 선언한 변수나 함수 안쪽에서만 사용 할 수있다. 이점만 보면 불편해보이지만 스코프오염 위험이 있는 전역 스코프에 비해 안전하기 때문에 지역스코프를 더 선호한다.그리고 지역스코프에는 함수 스코프와 블록 스코프라는 것들이 있다.

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

스코프와 var, let, const 키워드

var :
유효 범위 : 함수 스코프
값 재할당 : 가능
재선언 : 가능

let :
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 가능
재선언 : 불가능

const :
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 불가능
재선언 : 불가능

블록스코프안에서 let과 const로 선언한 변수는 스코프 안에서만 참조가 가능하지만 var로 선언한 변수는 블록스코프를 무시하고 스코프 울타리 밖에서도 접근이 가능하다.(var는 함수스코프 말만 듣는다.) 따라서 var는 왠만하면 선언하지 않는게 좋다.

0개의 댓글