오늘도 개발

자바스크립트의 특징 본문

웹 프로그래밍/Javascript

자바스크립트의 특징

Sueeeeeee 2022. 5. 25. 17:43

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