이번주(1월 23일 ~ 29일) 무엇인가 힘들지만 자바스크립트의 실력이 많이 향상된 것 같은 한 주였다.
1. 자바스크립트의 스코프는 크게 2가지가 있다.
전역 스코프와 지역 스코프. 더 깊게 들어가 변수 시점에서 보면 전역 변수와 지역 변수가 존재한다. 또한 자바스크립트의 스코프는 정적 스코프(렉시컬 스코프)이다. 렉시컬 스코프는 함수를 어디서 선언 하였는가? 가 관건이다.
2. undefined와 null, 일단 undefined는 '아무런 값도 할당받지 않은 상태'를 의미한다. 그리고 undefined는 예약어가 아니기 때문에 절대 비어있는 값이라고 undefined를 할당하면 안된다.
null은 Null과 NULL등이 모두 다르다. 또한 개발자들이 undefined과 다르게 값이 비어있다는 것을 표현하기 위해 사용하기도 한다.
3. 클로저는 A라는 함수에서 선언된 변수 a를 참조하는 내부 함수 B를 외부로 전달할 경우, A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상이다.
4. 콜백함수란 함수 안에 함수가 들어있는 것을 말한다. 콜백함수의 제어권은 말그대로 제어할 수 있는 권리이다. 이 제어권이 한 함수에서 다른 함수로 바뀌면서 호출 시점, 값들의 순서, this의 값 할당도 같이 넘겨진다.
콜백 지옥은 함수 안에 함수를 작성하면서 그것들이 여러번 반복되면 생기는 것을 말한다.
추상화란 특정 기능을 하는 그룹의 공통된 기능을 정의하는 작업이다. 자바스크립트는 클래스밖에 지원하지 않는다.
5. this같은 경우,
1) new가 쓰였을때(new 바인딩)
2) bind(), call(), apply()가 쓰였을 때(명시적 바인딩)
3) this가 오브젝트 내 함수안에서 쓰고 있기 때문에 그 함수를 가지고 있는 오브젝트를 뜻한다는 암시적 바인딩
4) 마지막으로 window, {}, undefined를 뜻하는 기본 바인딩 순으로 this의 규칙이 존재 한다.
6. 싱글 스레드란? 자바스크립트의 비동기 런타임에 Call Stack이 1개이기 때문에 한 줄씩밖에 처리하지 못한다.(동기적 처리) 그래서 그것을 싱글 스레드라고 한다.
비동기처리 지원이란? 비동기 처리를 도와주는 함수가 존재하며, 그것을 자바스크립트가 지원하기 때문에 비동기처리를 지원한다는 것이다.
7. ES는 자바스크립트가 태동하던 시기에 다른 회사(마이크로소프트)에서 자바스크립트와 비슷한 언어들이 나와 혼란을 가져오자, ECMAScript라는 표준안을 만들었고 그것을 ES라고 한다.
ES5와 ES6에서 많은 것들이 바뀌었다. 대표적으로 2가지를 뽑자면 var키워드의 호이스팅 문제를 해결할 let과 const이다. 그리고 마지막으로 배열에 forEach, map, filter, reduce, some, every 같은 메소들이 지원이다.
이번주 목표였던 알고리즘 2문제씩 풀기는 성공적이었다. 알고리즘 주차가 금요일(27일)부터 시작되었다. 다음주(2월 2일)에 시험이 있는데 그것을 무사히 합격하는게 다음주 목표이다.
화이팅!