# 정적 타이핑
- 정적 타이핑(Static Typing)이란 변수의 타입을 명확하게 지정하는 방식을 의미한다.
# ECMAScript6(ES6) 스펙
- Javascript가 ES6 이상으로 넘어가기 위한 몇 가지 걸림돌이 있다.
- Cross-Browsing과 Transpiler이다.
# Cross-Browsing 문제
- ES6, ES7이 발표되었지만, IE 같은 구식 브라우저에서는 바로 사용할 수 없는 것과 같이 브라우저마다 JS를 해석할 수 있는 Runtime 환경이 달라서 생기는 문지를 의미
- 구버전 IE의 경우, ES6에 새로 추가된 문법을 해석할 능력이 없는 엔진이라고 생각하면 된다.
- Cross-Browsing 문제를 해결하기 위해 Transpiler를 이용해야 한다.
# Transpiler
- ES6를 지원하지 않는 브라우저에서, ES6로 작성된 코드를 실행하기 위해서 내부적으로 ES6코드를 ES5로 변환시켜주는 역할을 하는 개체
- 대표적으로 Babel 라이브러리가 존재한다.
# Javascript Engine
- JavaScript로 작성된 코드를 해석하고 실행하는 Interpreter이다.
- 대표적으로 Chrome, Node.js V8 엔진이 존재한다.
- JavaScript 엔진은 JIT Compile 유형의 Interpreter이다.
# Interpreter
- 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
# JIT Compile
- JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법
# Runtime
- 실행 중 프로그램에서 사용할 수 있는 기본 라이브러리를 제공
- Chrome과 Node.js 모두 같은 V8 엔진으로 자바스크립트 코드를 해석, 실행하지만, Runtime이 다르기 때문에 실핼 중 기본으로 사용할 수 있는 라이브러리가 다르다.
- console.log() : Chrome & Node.js 제공
- alert() : Chrome만 제공
- __dirname : Node.js만 제공
# Engine vs Runtime
- Engine : JavaScript로 작성된 스크립트를 기계가 실행 가능하게 변경. 구문 분석 및 JIT 컴파일
- Runtime : 실행 중 프로그램에서 사용할 수 있는 기본 라이브러리를 제공
# 출처
https://sanghaklee.tistory.com/54 [이상학의 개발블로그]
https://freestrokes.tistory.com/92?category=1064730 [FREESTROKES DEVLOG]
'[DEV] Programming Lang > JavaScript' 카테고리의 다른 글
Promise, Async Await에 대한 고찰 (0) | 2020.10.28 |
---|---|
ISODate에 대한 고찰 (0) | 2020.10.08 |
World Easiest Text Editor (0) | 2020.08.28 |
Node JS Date Library 비교 (0) | 2020.08.13 |
[ES6] 신규 문법 - 비구조화 할당 문법 등 (0) | 2020.07.22 |
최근댓글