본문 바로가기

면접/cs

scope

#변수 #호이스팅 #클로저

우선 스코프는 유효범위라는 의미이다.
자세히 얘기하면 변수, 함수, 클래스 등의 식별자에 따라서 접근 규칙이 있는데, 그에 따른 유효한 범위란 말이다.
이 식별자의 규칙에 따른 범위는 크게 중괄호(블록) 또는 함수에 의해 나눠진다. => 함수 스코프, 블록 스코프

기본적으로 스코프는
1) 안쪽에서 바깥쪽으로는 접근 가능하지만 반대는 불가능
가장 바깥쪽: 전역스코프 , 안쪽에 있는 지역은 지역스코프
2) 중첩 가능

하고, 필요한 값을 찾기위해 가장 안쪽에서부터 바깥쪽으로 타고올라가는 것을
스코프 체인이라고 한다.

우선 식별자의 가장 기본인 변수에 대해서 얘기하자면
변수는 선언 > 초기화 > 할당 의 단계를 거쳐 생성되는데

가장 오래된 var. 미흡한점이 많은 var는 선언과 동시에 초기화가 일어난다.
이 점 덕분에 후에 선언한 값에 대해 호이스팅 되어 error가 아닌 undefined가 찍히기도 한다.



/*
호이스팅: var 선언문이나 function 선언문 등을 해당 스코프의 가장 위로 옮긴 것처럼 동작하는 특성
=> 윈도우 객체 덕분인듯
*/

이를 보완하기위해 es6 부터는 let, const 의 변수를 만들어 더 예측 가능한 코드를 만들수있게됐음

? const, let이 global scope가 안된다는건 뭔?


또 선언된 환경의 범위라는 lexical 스코프를 이용하여 closure 객체를 사용할 수 있는데
스코프를 이용해서, 변수의 접근 범위를 닫는(폐쇄)하는 것에 있다 => 싱글턴이 생각나네


'면접 > cs' 카테고리의 다른 글

프로세스와 스레드  (0) 2022.02.28
HTTP와 RESTful API  (0) 2022.02.22
CSR , SSR  (0) 2022.02.17
SSO, OAuth 그리고 keycloak  (0) 2022.02.17
도커, 젠킨스  (0) 2022.02.17