TIL 220209

김상한·2022년 2월 9일
0

Today I Learned

목록 보기
7/9

스코프

정의

스코프란 변수 접근 규칙에 따른 유효범위를 말한다.

규칙

  1. 안쪽 스코프는 바깥쪽 스코프의 변수에 접근할 수 있지만 반대의 경우는 불가능하다.
  2. 스코프는 중첩이 가능하다. (울타리 형식)
  3. 가장 바깥쪽의 스코프는 전역 스코프라고 하며, 그 외의 다른 스코프는 지역 스코프라고 한다.
  4. 전역 스코프에서 선언한 변수는 전역 변수, 지역 스코프에서 선언한 변수는 지역 변수라 부르며 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

종류

스코프의 종류는 두 가지가 있다. 중괄호로 둘러싼 범위를 블록 스코프라 하고 함수로 둘러싼 범위는 함수 스코프라 한다. 이 때 유의할 점은 화살표 함수는 블록 스코프로 취급한다는 점이다.

let, const, var 의 차이

표에서 나타나듯 var은 블록스코프를 무시하고, 함수스코프만 따른다.
let 선언 키워드는 재선언을 방지할 수 있고 const 키워드는 값이 변하지 않는 상수를 정의할 때 주로 사용한다.
선언 키워드 없이 변수에 값을 할당하면 var로 선언된 것처럼 취급되기 때문에 주의하여야 한다.

전역 객체(window)의 이해

전역 객체는 말 그대로 전영 영역을 담고 있다. var로 변수를 선언하게 되면 전역 객체에서도 동일한 값을 찾을 수 있다. 하지만 이미 window가 갖고 있는 값에 영향을 줄 수도 있기 때문에 전역 변수를 선언할 때는 let,const 키워드를 활용하는 것이 좋다.
전역 변수는 어디에서도 접근이 가능하기 때문에 편리하지만 다른 함수나 로직에 의해 의도되지 않은 변경이 일어날 수 있다. 따라서 전역 변수는 가능하면 많은 변수를 쓰지 않는 것이 좋다.

클로저

정의

외부함수의 변수에 접근이 가능한 내부함수

특징

함수를 리턴하는 함수이다.

내부함수는 외부함수에 있는 외부 변수 x에 접근이 가능하지만
외부함수는 내부함수에 있는 내부 변수 y에 접근이 불가능하다.
(클로저 함수에도 스코프 규칙이 적용된다.)

※ 데이터의 보존

외부 함수의 실행이 끝나더라도, 외부 함수 내 변수를 사용할 수 있다.
이 특징을 활용하면 실용적으로 활용이 가능하다.
다음의 예를 참고해보자.

divMaker 함수는 div 문자열을 tag변수에 담아두고 있고,
anchorMaker 함수는 a 문자열을 tag에 담아두고 있다.

이와 같이 특정 데이터를 스코프 안에 가두어 둔 채로 계속 사용할 수 있다.

profile
성장하는 사람

0개의 댓글