seungjun2.log
로그인
seungjun2.log
로그인
스코프
어승준
·
2023년 10월 21일
팔로우
0
JS 스터디
스코프
JS 스터디
목록 보기
20/26
📌 스코프 체인을 통한 식별자 탐색 과정은 어떻게 진행되는 지 설명해주세요.
변수 z가 if 블럭 스코프에 존재하지 않으므로 상위 inner 함수 스코프를 탐색합니다.
변수 z가 inner 함수 지역 스코프에 존재하지 않으므로 상위 outer 함수 스코프를 탐색합니다.
변수 z가 outer 함수 지역 스코프에 존재하지 않으므로 상위 전역 스코프를 탐색합니다.
변수 z가 전역 스코프에 존재하지 않으므로 ReferenceError가 발생합니다.
📌 스코프가 필요한 이유와 함수/블록 레벨 스코프의 차이를 알려주세요
스코프가 필요한 이유
의도치 않은 변수 값의 변조를 방지
특히 외부 API 라이브러리와 연동하여 사용할 때 같은 변수명끼리 충돌이 생기는 것을 방지할 수 있다.
효율적인 메모리 관리
코드 블럭 안의 참조값들은 코드가 실행 될 때만 메모리에 할당되는 것이 효율적이다.
함수 레벨 스코프(Function-level Scope)
함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.
블록 레벨 스코프(Block-level Scope)
모든 코드 블록(함수,if문,for문,while문,try/catch문 등)내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.
📌 스코프와 스코프 체인에 대해 설명해 주세요.
스코프란, 식별자의 유효 범위를 말한다.
스코프가 필요한 이유
의도치 않은 변수 값의 변조를 방지
특히 외부 API 라이브러리와 연동하여 사용할 때 같은 변수명끼리 충돌이 생기는 것을 방지할 수 있다.
효율적인 메모리 관리
코드 블럭 안의 참조값들은 코드가 실행 될 때만 메모리에 할당되는 것이 효율적이다.
스코프 체인이란, 자바스크립트 엔진은 변수(식별자)를 찾을 때 일단 자신이 속한 스코프에서부터 찾아보고, 그 스코프에 찾는 변수가 없으면 상위 스코프를 타고 올라가며 차례차례 찾아 나간다. 이를 스코프 체인(Scope Chain)이라고 한다
📌 var과 let, const의 스코프에 대해 설명해주세요.
var은 함수에서만 지역변수가 되는 함수레벨 스코프만을 가지지만
let과 const는 블록레벨 스코프를 가져 모든 코드블록(if for while try/catch 등 포함)이 지역 스코프를 가집니다.
📌 동적 스코프와 렉시컬 스코프를 설명하고 JS는 어떤 방식을 따르는지 말해주세요.
동적 스코프 - dynamic scope는 함수가 실행되는 위치에 따라서 함수의 상위 스코프를 결정합니다.
렉시컬 스코프 - lexical scope는 함수가 정의된 위치에 따라서 함수의 상위 scope를 결정합니다. 그래서 이 방식을 static scope(정적 스코프)라고도 부릅니다.
렉시컬 스코프
어승준
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용
팔로우
이전 포스트
원시값과 객체의 비교
다음 포스트
let const & 블록 레벨 스코프
0개의 댓글
댓글 작성