# 정적 타이핑

- 정적 타이핑(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]

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기