2021년도 최대 프로그래밍 커뮤니티인 Stack Overflow에서 가장 인기 있는 프로그래밍 언어로 1등으로 선정되었다.
자바스크립트는 HTML과 CSS와 더불어 웹을 개발하는 3가지 언어 중 하나이다.
각 언어의 역활을 간단하게 정리해 보자
1. HTML : 요소들의 배치와 내용을 기술
2. CSS : 색, 크기, 애니메이션 등을 정의하는 스타일리을 위한 언어
3. JavaScript : 웹 사이트에 활력을 부여하는 언어
자바스크립트 엔진(JIT Compiliation)
자바스크립트는 자바스크립트 엔진이 실행을 하게 되며 주로 웹 브라우저(사바리,엣지,크롬,파이어폭스)등에 포함이 되어 있다.
(가장 대표적으로 구글 크롬의 V8엔진이 있다.)
즉, 자바스크립트 엔진을 내장한 웹브라우저는 자바스크립트가 실행되수 있는 실행환경(런타임)이다.
컴파일러
- 실행하기전 모든 코드를 컴파일링(번역)하여 타입이 정적으로 결정
- 초기 컴파일하는 시간은 오래 걸리지만 실행 파일이 만들어진 이후 실행 속도는 매우 빠르다.
인터프리터
- 런타임시 코드를 한줄씩 번역해서 실행
- 초기 실행되는 속도는 빠르지만 한줄 씩 번역해서 실행하기 때문에 전체적인 실행 속도는 느리다.
초기에 자바스크립트 엔진은 그저 Interpreter 였다면 현재는 JIT Compiliation을 이용하고 있다.
왜냐하면 Interpreter 언어는 컴파일 되는 다른 언어보다 한줄 한줄 해석하고 실행하기 때문에 매우 느리기 때문이다.
하지만 현재 웹에서는 지도 기능과 같은 무거운기능들도 수행하고 있기에 현재는 더 나은 퍼포먼스를 위해서 JIT 컴파일을 이용하고 있다.
JIT Compiliation
프로그램 실행 중에 컴파일레이션을 수행하는 방법으로, 실행 전에가 아니라 실행 중에 발생한다.
기계 코드로의 번역에 대한 두 가지 전통적인 접근 방식인 ahead-of-time compilation (AOT)과 interpretation의 장단점을 결합한 것이다.
즉, 간단히 말해 컴파일러와 인터프리터를 합친 개념이다.
특징
동적 타입 언어
- 변수 타입이 없어 프로그램 실행 도중 변수로 저장되는 데이터 타입이 동적으로 바뀔수 있다.
싱글 스레드
- stack에 함수를 올려놓고 실행이 끝나면 stack에서 제거 하며 한번에 하나의 task만 동기적으로 처리한다.
논 블로킹
- 이벤트 루프와 콜백 큐가 있어 싱글 스레드 기반으로 작동하지만 다른 이벤트를 비동지거으로 처리할 수 있다.
EX) async/await, setTimeout
프로토 타입 기반
- 객체지향 프로그래밍 구현을 위해 사용
- 최근 JS와 타입스크립트는 클래스 문법 또한 지원한다.
(그 클래스 또한 프로토 타입 기반으로 제작되었다.)
https://softmoca.tistory.com/285
ECMAScript
각각 다른 여러 브라우저 자바스크립트 엔진들이 자바스크립트 코드들을 이해하고 번역하고 실행하기 위한 공통 자바스크립트 문법의 규격사항
ECMAScript 6에서 가장 큰 변화가 있었으며 현재 사용되는 JS문법들은 대부분 ES6문법이다.
각 버전별로 어떠한 변경 사항이 있고 특징이 있는지 기억하고 있을 필요는 없이 Bebel을 사용하면 ES버전 상관없이 프로그래밍을 맘편히 할 수 있다.
'모카스터디 > JavaScript' 카테고리의 다른 글
비구조화할당, 스프레드 연산자 (0) | 2024.02.29 |
---|---|
함수[선언식, 표현식, 화살표 함수, 콜백 함수] (0) | 2024.02.29 |
Loops (0) | 2024.02.29 |
자료형과 형 변환 (0) | 2024.02.29 |
변수와 상수[var,let,const 및 호이스팅,스코프] (0) | 2024.02.29 |