선언을 먼저 보자(Lexical Scope)c의 부모 ⇒ anonymousa의 부모 ⇒ anonymousb의 부모 ⇒ c의 부모 ⇒ anonymous선언 지도anonymous ⇒ x, c, ac ⇒ y, bb ⇒ za ⇒ xa에서 b 호출 되는지 보자,a에서 호출 불가
함수 스코프호이스팅이 일어나서 선언문이 모두 위로 올라가서 해석된다.선언만 되었지 값은 정의 되지 않아서 undefined 상태undefined1이 콘솔에 찍힐 것이다.호이스팅이 된 이후 코드 해석은 이런 식으로 일어난다.const, let도 호이스팅이 되지만 TDZ(
js ⇒ window, globalThis 로 바뀜node ⇒ global, globalThis 로 바뀜스트릭트 모드에서는ES2015 모듈에서는 strict 모드 자동 적용객체에서 this는 당연히 객체를 가리킨다 => X객체에서 this는 항상 자기 객체는 아니다.호
this 가 window로 추측하면 안된다.this를 포함하고 있는 익명함수가 호출되는 것을 확인할 수가 없기 때문에,addEventListener에서 콜백함수가 어떻게 호출되는지 모르기 때문에this 가 무엇인지는 알 수가 없다.함수는 1급 객체로, 파라미터로 넘겨줄
프로미스 ⇒ 실행은 됐는데 그 결괏값을 나중에 쓸 수 있음!setTimeout 안에 함수를 분리해서 필요할 때 사용할 수 없다.이 코드는 비동기가 아니다콜백 지옥은 보기도 안좋지만 결괏값을 바로 써야 한다.따라서 프로미스를 써서 필요할 때 써보자!Promise.all
비동기를 async/await 으로 동기로 만들었다. => X한번 비동기는 영원히 비동기이다.콜백이라고 무조건 비동기가 아니다.비동기 콜백이 비동기이고동기 콜백은 동기이다.setTimeout 은 비동기 함수이다.backgroud: 운영체제나 JS 엔진 => JS 가 아
Promise 는 실행은 바로 하되, 결괏값을 나중에 원할 때 쓸 수 있는 것제일 먼저딴짓5res 5이렇게 출력된다.new Promise() 의 콜백은 동기이다.catch 는 앞 모든 것의 에러를 담당한다.이렇게 then 뒤마다 catch 구문으로 에러 처리를 할 수
catch 는 앞 모든 것의 에러를 담당한다.이렇게 then 뒤마다 catch 구문으로 에러 처리를 할 수 있다.async/await 일 때도 try/catch 구문을 나눠서 각각 에러를 처리할 수 있다.아래 async 함수를 Promise 로 바꿔보자!await 이
2 - 6
async 함수 b 를 promise로 바꿔보자!이것은 조작이 거의 동시에 일어나고(p1, p2, p3 거의 동시에, 백그라운드에서 동시에 일어나는 것처럼)이것은 조작이 순서대로 일어난다.p1 끝나고 p2 끝나고 p3함수 a 안에 if 문 안에 for 문만 선언 지도를
클로저 문제 => 스포크, 비동기, var'클로저가 문제다' 아니다.클로저를 사용해서 문제를 해결한다.반복문과 비동기를 함께 사용하면 문제가 종종 발생333이 출력된다.var 가 함수 스코프이기 때문에var => let 면 해결된다.012이 출련된다.let 말고 즉시실
null 또는 undefined 이라면 'DEFAULT' 이다.