Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

24-2장 클로저 - 문소희 #1014

Closed
wants to merge 1 commit into from
Closed

Conversation

ccconac
Copy link
Contributor

@ccconac ccconac commented Dec 18, 2023

📚 24장 클로저

Q1. 출력되는 값을 적어주세요

const increase = (function () {
 	let num = 0;
 
 	return function () {
 		return ++num;
 	}
 }());
 
 console.log(increase()); // ?
 console.log(increase()); // ?

A1.

1
2

Q2. 외부 함수 밖에서 내부함수가 호출되더라도 외부함수의 지역 변수에 접근할 수 있는 이유를 설명해주세요.

A2.

자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정하는데, 이를 렉시컬 스코프라고 한다. 그리고 함수 객체의 내부 슬롯 [[Environment]]에 저장된 현재 실행 중인 실행 컨텍스트의 렉시컬 환경의 참조가 바로 상위 스코프이다. 함수 객체는 내부 슬롯 [[Environment]]에 저장한 렉시컬 환경의 참조, 즉 상위 스코프를 자신이 존재하는 한 기억하기 때문에 외부 함수 밖에서 내부 함수가 호출되더라도 외부 함수의 지역 변수에 접근할 수 있다.

Q3. 빈칸을 채워주세요

객체의 상태를 나타내는 프로퍼티와 프로퍼티를 참조하고 조작할 수 있는 동작인 메서드를 하나로 묶는 것을 [캡슐화] 라고 한다. 이때, [캡슐화]은 객체의 특정 프로퍼티나 메서드를 감출 목적으로 사용하기도 하는데 이를 [정보 은닉]라고 한다.

👀 REFERENCE

#1004

@Ryan-Dia
Copy link
Member

24.4~24.6 외 범위가 추가되어있습니다.

@ccconac ccconac reopened this Dec 19, 2023
@ccconac ccconac force-pushed the ccconac branch 2 times, most recently from 8ddb8ff to 63a5c28 Compare December 19, 2023 21:30
@ccconac ccconac closed this Dec 19, 2023
@ccconac ccconac reopened this Dec 19, 2023
@Ryan-Dia Ryan-Dia closed this Dec 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants