내일 배움 캠프 23_05_23 TIL
오늘은 어제에 이어서 JS문법 3주차 강의를 들으며 공부를 하였다
이 코드에서 실행을 예상했을 때 나는 단순히 맨위에서 전역변수로 a = 1 을 할당했으니까
첫 console.log(a)에서 1이 나오고
두번째 세번째 모두 1이 나올 줄 알았는데
실행값은
undefined
1
1 이였다
알아보니 이는 JS의 호이스팅 개념때문에 이렇게 된 것이였다.
다행히 공부를 하는 지금 틀려보면서 개념을 잡을 수 있었기에 다행인 것 같았고
this 바인딩에 대해서도 배우게 됐는데 브라우저에서 실행했을 경우 this는 window 객체이고

node에서는 this가 global 객체인것을 볼 수 있었다.

또한

this가 전역객체를 바라보는 문제를 해결하기 위해서는 call이나 apply를 이용해서 명시적으로 바인딩을 해줘서 전역객체를 참조하는 현상을 방지할 수 있었고 더 좋은 해결책으로는 바로
화살표 함수를 사용하면 실행 컨택스트를 생성할 때 this 바인딩 과정 자체가 없어서 화살표 함수를 사용하게되면
this가 전역객체를 바라보는 것이 아닌 기존의 값을 바라본다는 사실을 새롭게 알게 되었다.
1강을 보면서 원래 언어는 다르지만 코딩을 할 때 쓰는 제어문이나 조건문,반복문은 알고 있었기에
JS도 쉽겠거니 생각을 했었는데 3강을 들어오면서 역시 하나의 프로그래밍 언어를 습득한다는것은 결코 쉽지않으며
더욱 집중해서 JS 문법을 공부한 후 내가 코드로 작성해 보면서 내것으로 만들어야 겠다는 생각을 하게 되었고
항상 겸손하라는 말이 떠오르면서 더 열심히 JS 문법을 알아가야겠다고 생각했다.
내일부터 4강을 듣게될텐데 집중하면서 지치지않고 이어가야겠다.