Javascript와 다른언어의 차이점

이진혁·2022년 6월 8일
0

자바스크립트는 동적 프로토타입 기반 객체 지향언어이다

객체지향언어란?

IT관련 객체 지향 프로그래밍에서 사용하는 언어로서, 객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 수행될 수 있게 한다.

객체지향언어에는 크게 두 가지의 틀을 가지고 있다

  • 클래스 기반 객체지향언어
  • 프로토타입 기반 객체지향언어

클래스 기반 언어는 객체의 형식이 정의된 클래스라는 개념을 가진다.
반대로 프로토타입 기반 언어는 클래스라는 개념이 없다. 클래스 기반 언어의 상속 개념과 다르게, 객체 prototype의 위임 과정을 통해 상속의 과정이 구현된다.

  • 클래스 기반 언어는 틀 자체를 상속시킨다. 상속시킨 틀을 이용해서 객체를 생성한다. 하지만, 프로토타입 기반 언어는 객체들을 prototype으로 연결시킨다. 클래스라는 개념이 없기 때문에, 객체들을 연결 할 수 밖에 없다.

자바스크립트는 싱글스레드기반 비동기처리를 한다

일반적으로 우리가 C++언어를 작성하면, 해당 코드는 동기적, 순서대로 실행하지만, 자바스크립트는 비동기적이다. 작성된 순서대로 실행하지 않는다. 아래의 예시를 살펴보자.

function a() {
	setTimeout(() => {console.log("hello 1")},1000);
}

function b() {
	setTimeout(() => {console.log("hello 2")},500);
}

a();
b();
//hello 2
//hello 1

만약 해당 코드가 C++언어와 같이 동기적으로 실행한다면, 1000ms있다가 hello1이 실행되고, 500ms있다가 hello2가 실행된다. (hello1 -> hello2)

하지만 자바스크립트 엔진은 호출 스택이 1개인 단일 스레드이다. 그래서 hello2 -> hello1이 실행된다. 여기서 단일 스레드는, 한번에 단 한 개의 함수만 처리한다는 뜻이다.

참고

profile
개발 === 99%의 노력과 1%의 기도

0개의 댓글