프론트엔드/Javascript

[Javascript] 자바스크립트의 이해

공영재 2022. 8. 15. 23:49

 

웹을 구성하는 요소에는 HTML, CSS, 그리고 Javascript가 있습니다.

 

HTML이 웹의 뼈대를 세우고, CSS가 내용을 꾸미며, Javascript가 동작을 완성합니다.

 

그중에서 가장 각광받고 있는 프로그래밍 언어인 Javascript에 대해 알아보겠습니다.

 


 

자바스크립트를 구글에 검색하면 객체 기반의 스크립트 프로그래밍 언어라고 설명합니다.

 

키포인트는 객체 기반스크립트 언어라는 점입니다.

 

 

먼저 객체 기반에 대해 파헤쳐 보겠습니다.

 

C++이나 Java를 공부해보셨다면 객체 지향이라는 말을 들어보셨을텐데요.

 

일의 진행 순서대로 프로그래밍하는 절차 지향 프로그래밍과 다르게 

 

클래스를 통해 객체를 만들고 이 객체들간의 상호작용으로 프로그래밍 하는 방식을 의미합니다.

 

하지만 C++, Java와 달리 Javascript는 클래스가 없습니다.

 

(물론 ES6(ES2015+)버전부터 클래스 키워드를 지원하지만, 단지 명시적인 키워드일 뿐입니다.)

 

클래스가 없는 Javascript를 객체 지향적으로 만들기 위해 프로토타입이라는 것이 등장합니다.

 

프로토타입은 객체의 원형이라 생각할 수 있는데, 모든 객체는 프로토타입 객체를 가지고 있으며

 

객체는 그들의 프로토타입으로부터 프로퍼티(키:값)와 메서드(객체 내 함수)를 상속받습니다.

 

 

Prototype 예시

 

 

그래서 C++, Java는 Class-based OOP, Javascript는 Prototype-based OOP라고 불립니다.

 

Javascript가 객체 지향이 아닌 객체 기반이라는 언어로 불리는 이유도 

 

객체 지향의 4가지 특성 중 하나인 다형성(같은 모양의 코드가 다른 행위를 하는것)이 불가능하다는 점에서

 

온전한 객체 지향 언어와는 차이가 있기 때문입니다.

 


 

Javascript가 스크립트 언어라는 것은

 

소스 코드를 컴파일하지 않고 실행할 수 있는 프로그래밍 언어라는 뜻입니다.

 

소스 코드를 컴파일하지 않고 실행하는 환경을 "인터프리터"라 하기에 인터프리터 언어라고도 합니다.

 

이와 반대되는 언어를 컴파일 언어라고 하는데, 대표적으로 C, C++이 있습니다.

 

컴파일 언어는 소스 코드를 모두 기계어로 변환하는 빌드 과정을 거친 후 기계어 코드를 실행합니다.

 

그렇기에 빌드 과정에서 인터프리터 언어에 비해 시간이 오래걸리지만, 런타임 상황에서는 더 빠릅니다.

 

반면 인터프리터 언어는 소스 코드를 한줄 한줄 해석하여 바로 명령어를 실행합니다.

 

이러한 방식은 컴파일 과정이 없기에 수정/디버깅 속도 면에서 훨씬 유리합니다.

 

대표적으로 Python과 Javascript가 그러합니다.

 


 

이러한 Javascript는 웹의 동작은 물론 AJAX를 통한 웹 서버와의 통신또한 가능하며

 

Node.js라는 플랫폼을 통해 많은 성능 향상을 이루어내었습니다.

 

내부에서 제공되는 기능이 제한적이고, 보안에 취약하다는 단점이 있지만

 

각종 라이브러리 및 암호화 기술 등 단점을 보완하기 위한 해결책이 떠오르며

 

개발자들이 선호하는 최고의 언어로 자리매김하고 있습니다.

'프론트엔드 > Javascript' 카테고리의 다른 글

[Javascript] callback / Promise / async / await 정리  (0) 2022.10.02
[Javascript] ES6+ 문법  (0) 2022.08.19
loading