오늘도 개발
자바스크립트의 특징 본문
High-level(고급 언어)
- 저급언어 : CPU와 메모리를 직접 다루는 언어(예: c언어)
- 고급언어 : CPU와 메모리를 알아서 처리하는 언어(예: 파이썬, 자바스크립트)
자바스크립트는 고급언어이다.
Garbage-collected
자바스크립트 엔진은 필요없는 메모리를 알아서 정리해준다.
Interpreted / just-in-time compiled
기본적으로 자바스크립트는 인터프리터 언어인데,
실행속도가 느린 인터프리터 방식을 보완하기 위해 JIT(Just-in-time) 컴파일 방식을 사용하는 추세이다.
* JIT(Just-In-Time) Compilation
컴파일 방식처럼 전체 코드를 머신코드로 한 번에 변환하고
인터프리팅 방식처럼 바로 실행함
Multi-paradigm
procedural programming(절차적 패러다임),
object-oriented programming(객체 지향 패러다임),
functional programming(함수형 패러다임) 패러다임을 모두 지원한다.
Prototype-based object-oriented
원시 타입 자료형을 제외하면 자바스크립트에선 거의 모든 것이 오브젝트이다.
모든 오브젝트는 프로토타입을 기반하여 생성되기 때문에 Prototype-based라고 한다.
First-class Functions(일급함수)
변수와 똑같이 취급되는 함수를 First-class function이라고 한다.
자바스크립트에서는 모든 함수를 변수처럼 취급할 수 있다.
다른 함수의 인자로 넣을 수도 있고, 함수 내에서 함수를 반환할 수도 있다.
Dynamic
자바스크립트 엔진이 런타임 때 변수의 자료형을 동적으로 정하기 때문에
따로 자료형을 명시할 필요가 없다.
let x = 23;
x = 'Sue';
Single-threaded
처리해야 할 일이 동시에 발생했을 때 한 번에 하나씩 처리함.
* thread : CPU에서 실행하는 코드
Non-blocking event loop
Single-thread 방식을 사용하면 한 작업을 처리하는 데 오래 걸리는 경우 다른 작업도 지연됨.
=> 이벤트 루프를 사용하여 긴 작업은 배경에서 처리
=> 처리 완료하면 main-thread로 돌려놓음.
참고
유데미 - The Complete JavaScript Course 2022: From Zero to Expert by Jonas Schmedmann
'웹 프로그래밍 > Javascript' 카테고리의 다른 글
| Node.js에서 express 사용하기 - 3. dbmate로 마이그레이션하기 (1) | 2022.09.24 |
|---|---|
| Node.js에서 express 사용하기 - 2. TypeORM으로 데이터베이스 연결하기 (0) | 2022.09.23 |
| Node.js에서 express 사용해보기 - 1. 개요(express, nodemon) (0) | 2022.09.22 |
| 자바스크립트의 실행 컨텍스트(Execution Contexts) (0) | 2022.05.25 |
| 자바스크립트 런타임과 자바스크립트의 실행 과정 (0) | 2022.05.25 |