2018-10-05 TIL
- 오랜만에 쓰는 TIL.
- 그동안 여태 했던 것들을 다시 보면서 정리하거나, 구직활동에 관련된 일들을 하느라 남길만한 내용이 많이 없어 알고리즘만 올렸었지만 다시 조금씩 써봐야지.
- 뭔가 내가 분명 잘 할 줄 아는 것인데도 그것을 증명하기 위해 빠른 시간안에 잘 구현한다는 것은 다른 일인가? 라고 느꼈던 하루였다..
- 난 뭘 빨리 잘 만들어 내는 역량이 부족한 사람인가라는 생각을 했는데, 그걸 잘 하려면 어떻게 해야할지 고민이 된다.
- 아직 경험이 부족해서 그렇고 이제 깊이 있는 것보단 많이 여러 번 만들어보는게 필요한 걸까?
- 해도 해도 끝이 없구나~ 그래도 이런 저런 것에 흔들리지 말고 속도에 조급해하지 말구 ‘안 멈추고 계속 하는 것’에 집중하자
- 요즘 매주 금요일마다 중요한 개념 하나씩을 주제로 잡아서 1시간씩 스터디를 하고 있는데, 오늘은 this를 주제로 얘기했다.
- 그리고 프로그래밍 언어에서 환경?값?이 정의되는 시점에 대해서 좀 깨닫게 된 날이었다.
- 시점이 크게 2가지가 있을 수 있는데
하나는 컴파일러가 코드를 분석하는 시점, 또 하나는 코드가 실행되는 시점
이다. - 저번 시간에 스코프를 공부할 때, 스코프에는 렉시컬 스코프/다이나믹 스코프 2가지가 있다는 사실을 처음 알았고, 자바스크립트는 그 중 렉시컬 스코프 방식을 사용한다고 했다. 렉시컬이라는 단어가 어휘적인 이라는 의미도 있고, 예전에 JSON Parser를 개발해보며 컴파일러가 어떻게 동작하는지 힌트를 얻으려다가 lexer라는 단어를 접했었는데, 엔진이 컴파일러를 가지고 코드구문을 분석하는 과정, 즉 코드 선언 환경에서 정의된다는 의미로 렉시컬 스코프라고 한다는걸 알게되었다.
- this는 렉시컬과 상반되게 (혹은 다이나믹 스코프와 유사하게) 호출시점을 기준으로 정의되는 아이다. 그럼으로 인해 생기는 이슈들 (특히 비동기안의 콜백함수가 this를 잃어버리지 않게 하는 일)들을 위해 기존에는 bind나 that = this같은 꼼수를 부려야 했는데
- es6의 arrow function이 탄생하면서 드디어
'렉시컬' 적으로 this를 고정해줄 수 있게
된거다. - 그 전에도 arrow function이 그런 일을 한다는 건 알고 있었지만 스터디를 통해 렉시컬적인 것과 다이나믹한 것의 두 부류를 알고나서 arrow를 보니깐 윗 문장에 쓴 것처럼 arrow가 다시 새롭게 보였다.
- 음… 별거 아닐 수 있는데 나한테는 엄청 큰 깨달음 이었다. 오늘의 TIL 끝~
Subscribe via RSS