JavaScript란?

Murpin·2022년 10월 4일
0

JavaScript란?

Front-End 개발자와 뗄레야 뗄 수가 없는 언어 바로 JavaScript 과연 우리는 이 언어를 어디까지 알아야할까요?
물론 그건 Front-End 개발자만이 알 수 있겠죠 :)
오늘은 한번 JavaScript에 대해 알아보겠습니다

먼저 기본적으로 접근해보겠습니다.
웹은 초기에 HTML이라는 정적인 언어를 통해 만들어졌습니다. 하지만 현재 웹이 세계적으로 보급이 되면서 많은 사람들이 웹에 접근하기 시작했고, 사용자는 화면에 보이는 웹페이지를 통해 웹을 사용하였습니다.
그 당시 HTML은 앞에 말처럼 정적인 언어로 이루어져 있기에, 다소 밋밋한 디자인과 빈약한 사용자와의 의사소통에 한계가 있었습니다.
디자인을 해결하기 위해서 CSS가 등장하였고, 사용자와 더 소통하기 위해 생겨난 것이 JavaScript입니다.

자바스크립트는 어떤 언어인가요?

자바스크립트를 언어로 구별한다면 동적타입의 인터프리터 언어입니다.
그렇다면 여기서 나올 수 있는 의문은?

동적타입언어는 뭔가요? 인터프리터 언어는 뭔가요?

자바스크립트 동적언어라는 것에 이해하기 위해서는 정적 언어와 동적 언어의 차이를 알아야합니다

정적 타입은 컴파일 시점에 변수의 타입이 확정되고, 동적 타입은 런타임 시점에 확정된다라는 특징이 있습니다.
좀 더 자세히 설명해본다면

int add(int x, int y) {
  return x+y;
}

위의 코드와 같이 함수 파라미터와 함수명 앞을 볼 수 있 듯 값 타입을 명시적으로 표기하고 우리는 그 합의 결과가 `int`일거라는 예측이 가능할 겁니다. 만약 입력받거나 넘겨주는 `y`나 `x`값이 `char`일 경우에는 컴파일에 실패할 것입니다. 컴파일 시점에서 오류 검출로 인해 런타임 시 오류의 범주를 줄여줄 수 있고 최적화와 메모리가 수월할 것입니다. 장점이 곧 단점이 듯 위와 같이 모든 타입에 대한 규칙을 지켜주어야한다는 불편한점이 있습니다.

그렇다면 자바스크립트가 동적타입 언어라는 것에서는 어떤 것이 있을까요?
런타임에 타입이 결정되는 언어입니다.
이 말은 즉, 소스가 빌드가 되는 순간 자료형이 결정되는 것이 아니고 실행 시에 결정됩니다.
그렇기에 런타임에서 언제 변수의 생성과 소멸이 일어날지 모르기에 메모리 주소가 계속해서 변하고 변수의 이름을 추적하는 동적인 특성을 갖고있게 동적 언어라고 할 수 있습니다.
이 또한 예시를 들어보면

const add = (a, b) => {
  return a+b;
};


위의 예시는 자바스크립트의 화살표 함수를 통한 합 계산입니다.
이전 코드와 다른 점으로는 a와 b의 타입을 전혀 알 수 없습니다.
런타임 시에 각 타입이 결정되게 됩니다.
이런 특성에 의해서 상대적으로 자유로운 문법을 구사할 수 있다는 장점이 있지만, 사전에 타입체크가 안되는 만큼 오류에 취약하고 자바스크립트 변수 하나의 용량 8바이트라는 것을 감안한다면 최적화가 힘들다는 단점이 있습니다.

인터프리터 언어란..

코드를 위에서부터 한 줄씩 읽어가면서 실행하는 프로그램을 뜻합니다.
언어를 번역과 실행이 동시에 이루어집니다.
이제 이해가 되실까요?
런타임 시에 각 타입이 결정되게 되며, 이 과정에서 모든 코드가 한 줄씩 읽으면서 그 변수를 마주치는 순간에 맞게 결정되게 된다는 특징을 가진 언어가 바로 자바스크립트입니다.

위 두가지 특성을 지닌 것이 여러분이 항상 말하는 자바스크립트 언어의 기본 개념입니다.

자 그럼, 이제 자바스크립트의 개념을 여러분도 어느정도는 설명할 수 있다고 생각됩니다. 감사합니다.

profile
모든 것에 배움을 얻고자합니다

0개의 댓글