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장 클로저 - 한수지 #1009

Merged
merged 1 commit into from
Dec 19, 2023
Merged

Conversation

nincoding
Copy link
Contributor

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. 빈칸을 채워주세요

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

A3.

캡슐화, 캡슐화, 정보은닉

#1004

@Ryan-Dia
Copy link
Member

@Ryan-Dia Ryan-Dia added the valid label Dec 18, 2023
@Ryan-Dia Ryan-Dia merged commit f939aca into Next-by-Next:main Dec 19, 2023
1 check passed
@nincoding nincoding deleted the nincoding branch December 19, 2023 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants