반응형
요약
Jumpong the Gaps
- JS는 과거의 호환성을 중요시한다고 했다. ES2019를 2016 엔진에서 실행한다면 충돌날 가능성이 높다. => 이러한 갭을 줄이기 위해서 나온 게 BABLE임.
- BABLE은 ES2019코드를 2016 엔진에서도 돌아가는 문법으로 변환해줌.
Filling the Gpas
- 최신 JS와 옛날엔진의 간극을 매우는 방법은 2가지, Transpilation과 polyfilling임
- 트랜스파일링은 => 바벨과 같은 도구 사용하기.
- polyfilling은 그냥 코드로 새로운 기능 구현해 주기.
- JS가 계속 발전하기 때문에 이 간극은 계속해서 존재할 것임. 두 기술을 항상 채택해야 함.
What is Interpretation?
JS는 다음과정을 통해 컴파일된다.
- 개발자에디터에서 프로그램이 BABEL에 의해 변환되고 Webpack에 의해 패킹되어 JS엔진에 제공됨.
- JS엔진은 코드를 AST(소스코드를 트리 구조로 만드는 과정)로 파싱함
- JS엔진이 AST를 바이트코드로 변환하고 JIT 컴파일러가 이를 최적화함.
- 마지막으로 JS VM이 프로그램 실행
즉 JS는 컴파일 언어에 가깝다...!
WebAssembly
- WASM은 JS 외의 언어들을 웹으로 가져와 성능을 높이려는 방향임.
Strictly speaking
- es5부터 use strict 모드가 나왔다. 레거시 코드 때문에 현재도 선택사항임.
- use strict모드는 조기 오류를 잡아내며, JS엔진이 코드를 최적화하고 효율적으로 사용하게끔 안내한다.
- ES6 모듈은 Strict mode가 default임.
느낀 점
- BABEL이 필요한 건 알고 있었지만, JS가 과거의 호환성을 중요시한다는 이유와 함께 들으니 더 설득됨.
- https://web.stanford.edu/class/cs98si/slides/overview.html 여기서도 JS가 인터프리터 언어라고 설명하고 있어서 참 헷갈림. JS가 초기에 인터프리터 언어에서 시작하여 JIT컴파일러를 장착했기 때문에 이러한 얘기가 많은 듯. 이제는 작동과정을 통해 컴파일된 언어라고 말할 수 있을 것 같다.
- https://velog.io/@seungchan__y/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-Compiler-Interpreter-%EC%96%B8%EC%96%B4%EB%8B%A4
반응형
'공부 정리 > You Don't Know Js' 카테고리의 다른 글
[YDKJ] Get Started - Chapter 2 - 2(完) (0) | 2023.04.23 |
---|---|
[YDKJ] Get Started - Chapter 2 - 1 (0) | 2023.04.22 |
[YDKJ] Get Started - Chapter 1 - 1 (0) | 2023.04.20 |
[YDKJ] Get Started - preface (0) | 2023.04.20 |
[YDKJ] Get Started - foreword (0) | 2023.04.19 |
댓글