var - 선언과 초기화를 동시에 함. var는 유저가 값 초기화를 안해도 undefined를 찍어줌.
let - 선언과 초기화가 별개임. let은 유저가 값 초기화를 안 하면 not initialized 라고 오류가 남.
==은 비교 시 자동 형변환을 한다!
핵심: 현업에서는 그렇게 고민할만큼 this가 애매해지도록 코드를 짜지 않는다!
결론: 그러니 너무 걱정하지 않는 것이 가장 중요
resolve -> then 으로 전달되고, reject -> catch로 전달된다.
Q. 그러면 비동기를 동기적으로 처리하면 병렬처리가 아닐 수도 있을까요?
A. 아뇨 async await는 Promise의 syntax sugar 에 불과하기 때문에 근본적인 동작이 바뀌는 것은 아닙니다. 다만 싱글스레드인 JS는 커널을 추상화해서 쓰는데, 운영체제에 병렬 처리를 맡길 작업과 아닌 작업이 구분됩니다. 그래서 병렬일 수도 있고 아닐 수도 있습니다. JS에서만 처리한다면 무조건 싱글스레드이기 때문에 병렬처리가 될 수 없습니다. JS에서 멀티스레드를 사용하려면 worker_thread모듈로 명시적으로 스레드를 띄워야합니다
원본이랑 똑같이 뜬 사본을 가져가는 것이므로!
프로세스란 프로그램이 메모리 위에 올라가 운영중인 상태
쓰레드는 작업의 단위인 것
앗...!!
그러니 Node 환경에서는 나오지 않는다. conosole.log(document) 라고 하면 undefined 라고 나옴
야호! 편하다
Python의 주석 붙이듯 # 붙이면 된다. 그러나 아마 나중에 TS를 필수로 쓰게될 것임
함수가 아니라구? 뭔소리야.
참고 블로그
JS의 class는 사실 함수라고 한다! 내가 생각하는 JAVA의 그런 함수와는 달라서 안 되나보다.
-> 사실 가능은 하다! 변수나 메소드를 static으로 선언하면 직접 참조할 수 있다.
이럴 땐 this.가 붙는 모든 변수 앞에 _를 붙여주면 거짓말처럼 스택 오버플로우가 나지 않는다
이런 식으로 붙여주면 문제 없음!
외부함수보다 중첩함수가 더 오래 유지되는 경우, 중첩함수는 이미 수명이 끝난 외부함수의 변수를 여전히 참조할 수 있다
이건 콜스택을 그려보면 좀더 쉽게 알 수 있다. 전역 위에 outer라는 함수가 실행되고 나가고, 그 뒤에 outer를 참조하는 inner라는 함수가 실행될 때, outer의 수명은 이미 끝나 콜스택 상에 없지만 inner는 여전히 outer의 객체를 참조할 수 있다. -> 이때의 중첩함수가 바로 클로저!