코어 자바스크립트를 읽고
June 29, 2022
이 책을 읽게 된 이유
자바스크립트 서적 중에 많이 알려져 있는 책이고, 추천을 받아서 읽게 되었습니다.
모던 자바스크립트 핵심 가이드 책이 간략하게 ”호이스팅은 무엇이다”라고 정의를 설명해 주는 책이었다면 코어 자바스크립트는 원리에 대해서 설명해 주는 책이었던 것 같습니다.
예를 들면 클로저는 어떻게 실행이 종료된 컨텍스트의 데이터에 접근할 수 있는지? 같은 원리를 중요시 여기는 분이라면 재미있게 읽을 수 있는 책이라고 생각하고, 자바스크립트에 익숙하지 않다면 어려운 책이라고 생각합니다.
문제로 만들면 더 좋을듯
책을 읽으면서 같이 스터디를 하는 분에게 공유할 목적으로 만든 문제들이 있는데 몇 가지를 공유합니다. 혹시나 중복된 문제가 있을 수도 있지만 아래를 읽고 스스로 답해보시면 좋을 것 같습니다.
- 데이터 타입에는 어떤 게 있나요? 그리고 그것에 대해서 설명해 주세요
- 불변성이 뭔가요? 자바스크립트에서 불변성은 왜 중요한가요?
- 자바스크립트는 동적 타입 언어라고 불리는데 이유가 뭔가요?
- 자바스크립트는 숫자의 메모리 공간을 몇 비트 확보하나요?
- 기본형 타입과 참조형 타입의 변수 영역과 메모리 영역에 대해서 설명해 주세요
- 기본형 타입은 불변성을 지니고 참조형 타입을 가변성을 지닌다고 하셨는데 이유가 뭔가요?
- 자바스크립트 가비지 컬렉터에 대해서 설명해 주실 수 있나요?
- 자바스크립트에서 객체를 불변으로 유지하는 방법들에 대해서 설명해 주세요
- 얕은 복사와 깊은 복사에 대한 것과 차이점, 방법까지 설명해 주세요
- 스프레드 문법이나 Object.asign은 어떤 문제가 있나요?
- JSON 문법을 사용해서 깊은 복사를 하는 것은 어떤 문제가 있나요?
- undefined와 null의 차이점에 대해서 설명해 주세요.
- 실행 컨텍스트가 뭔지 설명해 주실 수 있나요?
- 실행 컨텍스트는 어떤 상황에서 생성되나요?
- 아래 코드는 실행 컨텍스트가 어떻게 실행되고 종료되는지 설명해 주세요.
const outer = () => {
console.log('응애')
const inner = () => {
console.log('응애!')
}
inner()
}
outer()
- 실행 컨텍스트 안에는 어떤 것들이 있나요? 그리고 하는 역할이 무엇인지 설명해 주세요.
- VariableEnvironment와 LexicalEnvironment의 차이점에 대해서 설명해 주세요.
- 호이스팅 뭔지 설명해 주세요. 실행 컨텍스트와 호이 스팅이 연관성이 있나요?
- 함수 선언식과 함수 표현식의 차이점을 알려주세요.
- 익명 함수가 어떤 것인가요? 즉시 실행 함수가 뭔지 설명해 주실 수 있나요? 즉시 실행 함수의 장점은 무엇인가요?
- 함수 선언식에는 어떤 문제점이 있나요?
- 스코프에 대해서 설명해 주실 수 있나요?
- 스코프 체인에 대해서 설명해 주실 수 있나요? 실행 컨텍스트와 연관되게 설명해 주세요.
마치며
문제가 더 있긴 하지만 이 정도만 하고, 따로 답을 적지는 않았습니다. 책을 읽으면서 직접 답해보면 도움이 될 것이라고 생각합니다.