Q. Scope란?
자바스크립트에서 Scope는 변수에 접근할 수 있는 범위이다.
크게 global(전역)스코프, local(지역)스코프 2가지가 있다.
전역 스코프는 전역에 선언되어 있어 어느 곳에서나 해당 변수에 접근할 수 있고,
지역 스코프는 해당 지역에서만 접근할 수 있다.
JS에서 함수도 지역 스코프에 해당한다.
함수를 선언하면 선언할 때 마다 새로운 스코프를 생성하고 이를 '함수 스코프' 라고도 한다.
(그냥 지역 = 함수 스코프라고 봐도 되는 부분인듯)
아래 예를보면,
var a = 1; // 전역 스코프
function print() { // 지역(함수) 스코프
var a = 123;
console.log(a);
}
console.log(a); // 1
print(); // 123;
(scope를 더 정확하게 이해하려면 이전 글에 있는 실행 컨텍스트(execute context) 내용을 선행해야 하는 부분인듯)
console.log(a) 가 1 인건 동의 할 거고
print() 가 123인건 (JS 엔진이 실행 컨텍스트에서 객체를 생성해) 변수 a를 먼저 지역 스코프에 있나 확인해보고 있으면
지역 스코프의 값 a = 123을 할당하고
변수 a를 print 함수 안에서 선언하지 않았다면(Scope Chain에 의해)
전역 스코프에 있는 a = 1;을 할당했을거다.
기존 var의 경우 함수 스코프를 가졌기 때문에 함수 내에서만 지역변수가 유지되는 문제가 있었는데,
ES6에서 let, const 키워드가 추가되면서 함수가 아닌 일반 블록 { var a = 123; } 에서도 지역변수를 선언할 수 있게됨
추가 단어 설명!
실행 컨텍스트 란(execute context)
=> 자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념
우리가 코드를 작성하고 실행한다면 실행 컨텍스트 내부에서 실행되고 있는 것. 즉, 코드들이 실행되기 위한 환경이자 하나의 박스 컨테이너라 볼 수 있음!
스코프 체인Scope Chain 이란
유효 범위를 나타내는 scope는 scope 프로퍼티로 각 함수 객체 내에서 연결리스트 형식으로 관릳뢰는데,
이 scope 간의 상하관계를 스코프 체인이라 한다.
오늘은 '다정한 것이 살아남는다' 읽을 거지롱 오늘부터 무신사 블프하넹.. 돈도 없는데 흙흙ㅠ
TypeScript 공부하고 면접 질문지 작성하다보니까 책 거의 못읽음~! 요새 자꾸 배나오는거 같아서 다시 헬스 열심히 가려고 한다. 저번주에 3번갔는데 너~~무 오랜만에 가서 첫날하고 3일동안 근육통이 좀 있어서 괴로웠다.. 이번주부터는 주 5일 뿌셔야지. 아니 밥먹는시간이 너무 애매해 스터디카페에서 공부하니까 집 왔다갔다 하면 1시간30분 홀랑이넹 밥차리고 설거지하고 하니까 금방이여 증말.. 그래서 당분간 저녁 스킵하고 공부하다가 바로 헬스장 가는 걸로! 여기 커피랑 후레이크 믹스 같은거 있어서 너무 좋음 최고최고b
'WIL & TIL' 카테고리의 다른 글
22/11월 TIL(Q. var, let, const의 차이에 대해 알려주세요. ) (0) | 2022.11.18 |
---|---|
22/11월 TIL(Q. DOM & useRef & useEffect 란?) (0) | 2022.11.15 |
22/11월 TIL(Q. Execute Context란?) (0) | 2022.11.11 |
22/11월 TIL(Q. Virtual DOM이란?) (0) | 2022.11.10 |
22/11월 TIL(Q. '변수 생성 3단계' & '호이스팅'이란?) (2) | 2022.11.08 |