you don't know js
- 독서 기간 (2024.11.18 ~ ) / 스터디를 통해 진행
- 목적 : JS 기반으로 알고리즘 공부와 더불어 코딩 테스트 준비
목차 요약
- 1장 ~ 4장 자바스크립트 개념 / 1장 ~ 8장 스코프와 클로저
- 총 341 Page
- 연습하기는 스터디로 진행하진 않을 예정
스터디 진행
- 기간 : 11월 18일 부터 진행 ~ 약 2달 예상
- 날짜 : 매주 목요일, 10시부터 진행할 예정 (수정 가능성 있습니다)
- 한번 스터디때마다 2명이 발표를 하고, 간단한 퀴즈까지 내주시면 감사합니다. (퀴즈는 필수 아님) 발표시간은 30분 이내로 하는 것이 적당할 듯 하고, 디스코드에서 진행합니다.
- 발표자 이외의 분들도 책을 읽어오면 좋을 것 같아요 (권장)
- 발표자 2명은 제가 랜덤 순서를 정하겠습니다.
- 요약 : 매주 하루, 2명 발표, 둘이 각각 1장(챕터) 발표
- 특이사항 : 짧은 챕터는 한명이 2장을 발표하겠습니다.
Intro & part 1
ch1 자바스크립트
자바스크립트에 마스터는 없습니다. 더 익숙해지고 친해질 수 있습니다. 이 책은 자바스크립트와 가까워지기 위한 여행이 될 것 입니다.
1.1 책에 대하여
자바스크립트 정복은 목적지가 아니라 바라봐야할 방향입니다. 조급하게 이 책을 후딱 읽고 끝낸다는 마음보다, 천천히 인내와 끈기를 갖고 읽 기 바랍니다.
1.2 이름의 유래
자바 사용자에게 마케팅하기 위해 자바 + (가벼운)스크립트 언어 라는 의미로 만들어졌습니다.
TC39에서 지정하고 공식화된 명칭은 ECMAScript 입니다. ES6는 ECMAScript 2015로도 불립니다. (ES6는 2015년에 나왔기 때문)
자바스크립트와 자바의 관계는 햄스터와 햄의 관계와 같습니다.
1.3 명세서
TC39는 js를 관리하는 운영 위원회입니다. 제안 단계는 0 ~ 4단계로 나뉩니다.
누구나 제안을 할 수 있지만, TC39의 승인을 받아야합니다. (https://github.com/tc39/proposals)
js는 버전이 없습니다. 공식적인 표준 js는 오직 하나입니다.
모든 브라우저, 디바이스 제조사는 단 하나뿐인 명세서를 기준으로 js 구현체를 만듭니다.
JS를 지배하는 웹
JS 구현체를 만들 때 가장 중요시 되는 분야는 역시나 웹 환경입니다.
JS 엔진 제조사들은 js 구현체를 만들 때, 여러 상황에 대한 엣지 케이스를 고려하여 발전해 왔습니다.
이런 상황에서 JS 명세서가 업데이트 되었을 때, 엔진 제조사들은 명세서를 준수하도록 엔진을 업데이트 하거나 명세서 개정안을 자사 엔진에 반영하지 않겠다는 결정을 합니다.
만약 자사 엔진에 반영하지 않는다고 했을 때에는, TC39 위원회는 종종 기존 결정을 철회하고 명세서를 웹에 맞게 수정합니다. (ex. contains -> includes, flatten -> flat)
JS지만 JS가 아닌 웹 전용 문법 (feat: alert)
alert("Hello, World!");
이 코드는 모든 웹 전용 문법입니다. (alert는 브라우저에서만 동작합니다.)
브라우저 엔진, Node js 등과 같이 JS가 실행되는 환경은 전역 스코프에 API를 추가해 자체적으로 사용할 수 있는 기능을 제공합니다. (ex. alert)
alert 말고도 다양한 API가 있습니다. (ex. fetch, getCurrentLocation)
node js는 브라우저에서 사용할 수 없는 API를 제공합니다. (ex. fs, http)
우리가 자주 사용하는 console.log도 브라우저에서만 사용할 수 있는 API입니다.
이 처럼 console.log 코드를 본다면 호출은 JS지만, console.log는 명세서에 없는 웹 전용 문법이라는 것을 알 수 있습니다.
모든 코드가 JS인 것은 아닙니다.
개발자 도구의 경우 가장 중요시하는 것은 DX입니다. (Developer Experience)
그렇기 때문에 개발자 도구에서의 결과가 JS 명세서와 일치하지 않을 수 있습니다.
예를 들어 "전역 스코프 최상위 레벨에서 let과 const로 변수 여러 개를 선언했을 때 작동 방식"은 실제 명세서와는 다를 수 있습니다.
정확한 내용을 알고 싶다면 명세서를 참고해야합니다.
1.4 JS의 다양한 얼굴
프로그래밍에서는 "