코드스피치 자바스크립트 단어정리(초기)
블록킹 동기적인 명령을 실행시키면 명령이 종료되기전까지 cpu는 점유가 되기때문에 다른 명령을 실행시키지 못하는 상태를 블록킹
클로져 함수가 생성될때 밖에 있는 변수를 캡쳐링하여 사용한다. 이러한 변수를 자유변수 = 프리벨류 자유변수가 잡혀서 사용되는 공간을 클로져 원래 함수는 인자와 지역변수만 사용할 수 있는데, 그게 닫혀서 사용되는 것
조건문 IF는 플로우를 나누어주는것이며, IF문 안에 있는것을 따로 빼내어 함수나 클래스로 나누어주는것이 좋다
자바스크립트는 싱글쓰레드? Main UI Thread I : 자바스크립트를 싱글쓰레드로 지칭하는 것 Background Thred N : API, 콜백등 WEB Worker Thread : HTML5 지원 => Main UI Thread가 프레임별로 실행하기 때문에 싱글쓰레드라고 하고 Backgroud / Web worker 쓰레드가 실행한 결과값을 다음 / 대기 프레임에 넘겨서 Main쓰레드가 그걸 가져서 화면에 그려준다.
SYNC : 서브루틴이 즉시 값을 반환함 => return을 통해서 값을 바로 반환함
- BLOCK : 즉시 플로우제어권을 반환하지 않음(nomal / legacy API) => 우리가 짜는 코드의 대부분이다.
- NON BLOCK : 즉시 플로우제어권을 반환함 (old API / IOCP, Future, img.complete)
ASYNC : 서브루틴이 콜백을 통해 값을 반환함 => 콜백함수가 매개변수로 인자를 받아서 콜백 함수의 결과값을 반환함
- BLOCK : Trap
- NON BLOCK : 즉시 플로우제어권을 반환함(modern API)
Promise(ES 5) 비동기 작업같은 경우 제어권이 결과가 오기전까지 우리에게 있는것이 아니라서 수동적이다. 그래서 Promise를 통해서 결과를 받아오고 필요로 할때 then을 통해서 결과를 사용할 수 있다.
Async(ES 7) Promise기반의 결과값을 바로 받을수 있다. 하지만 제어권이 비동기적인 작업만 처리할수있어서 Generator Async Await이 나옴