본문 바로가기
Computer Science/Javascript

JavaScript - 자바 스크립트의 기본 개요

by 마늘아빠 2021. 4. 10.
728x90
반응형

Computer Science - 자바스크립트의 기본 개요

소개

자바스크립트는 웹브라우저에서 동작하는 스크립트 언어이다. 초창기에 자바스크립트는 웹 페이지 제작에 있어서 보조적인 기능을 수행하기 위한 용도로써 사용했다. 대부분의 로직은 주로 웹 서버에서 실행되었고, 클라이언트 웹 브라우저에서는 서버로부터 받은 HTML과 CSS, 데이터로 렌더링 해주는 수준이었다. 

하지만 지금은 웹이 발전하면서, 웹 아키텍처에도 여러 가지 크고 작은 변화가 일어났다. 특히, 과거에 서버에서 담당하는 역할들이 상당 부분 웹 브라우저로 이동하였고, 자바스크립트는 이 변화의 중심에 서게 된다. 게다가 JQuery의 등장으로 보다 쉽게 DOM (Document Object Model)을 핸들링하게 되면서 더 많은 발전을 이루었다.

 

자바스크립트의 활용 범위

현재 브라우저 기반의 자바스크립트 라이브러리뿐만 아니라, Node.js와 같은 서버 기반의 자바스크립트 환경에서 동작할 수 있는 각종 라이브러리까지 쏟아져 나오고 있다. 이제는 자바스크립트만으로는 웹 서버와 클라이언트인 웹 페이지 개발을 동시에 할 수 있는 수준까지 이른 것이다.

웹 개발

현재 크롬이나 파이어폭스 등 웹 브라우저들이 나날이 발전하고 있다. 그들이 새 버전을 내놓을 때마다 항상 강조하는 것이 자바스크립트 엔진의 성능 향상에 관한 것이다. 이는 웹 페이지를 개발하는 데 있어서 자바스크립트의 역할이 얼마나 큰지를 방증한다. 특히, JQuery를 비롯하여 knockout(http://knockoutjs.com), backbone(http://backbonejs.com)등의 라이브러리는 웹 개발자에게 이미 중요한 컴포넌트로 자리 잡았다.

서버 개발

Node.js의 출현으로 자바스크립트를 활용한 서버 개발도 활발히 이루어지고 있다. express, socket.io 등의 라이브러리는 보다 쉽게 자바스크립트로 서버를 개발할 수 있는 환경을 제공해준다.

애플리케이션 개발

웹이 하나의 플랫폼으로 진화하면서, 웹 OS를 표방한 여러 가지 프로젝트가 진행되고 있다. 구글에서는 크롬 OS라는 브로 우저 기반의 OS를 선보였고, 모바일에서도 HP에서 웹 OS(리눅스 커널에서 구동되는 모바일 운영체제)라는 이름으로 휴대폰과 같은 모 바딜 기기에도 웹 기반의 각종 기술이 활용되고 있다. 이러한 웹 기반 플랫폼에서 구동되는 애플리케이션 개발에 자바스크립트는 없어서는 안 될 핵심 요소가 되었다. 특히 폰갮과 같은 크로스 팰랫 폼 개발도구를 이용하면서 DOM 요소를 핸들링하여 렌더링 하는 것에서부터 더 나아가 디바이스의 동작에 대한 제어도 가능해졌다.

 

자바스크립트의 핵심 개념
객체

자바스크립트의 거의 모든 것은 객체이다. 여기서 '거의'라는 표현을 쓰는 이유는 몇 가지가 제외되기 때문이다. 바로 기본 데이터 타입인 boolean, numberm string이다. 그리고 특별한 값인 null, undefined도 해당된다. 이를 제외한 나머지는 모두 객체이다. 세 가지 기본 데이터 타입은 모두 객체처럼 다룰 수도 있다. ( null과 undefined를 제외한 모든 것을 객체로 다룰 수 있다 )

함수

자바스크립트에서는 함수도 객체로 취급한다. 일반적인 객체보다 조금 더 많은 기능이 있는 개체라고 할 수 있다. 함수는 일급 객체(First Class Object)로 다뤄진다.

프로토타입

모든 객체는 숨겨진 링크인 프로토타입을 가진다. 이 링크는 해당 객체를 생성한 생성자의 프로토타입 객체를 가리킨다. 이 링크를 ECMAScript에서는 [[Prototype]]이라고 표현한다. 이 링크로 자바스크립트는 훨씬 더 다양하게 자신만의 자료구조를 작성할 수 있다.

실행 콘텍스트와 클로저

자바스크립트는 자신만의 독특한 과정으로 실행 콘텍스트를 만들고 그 안에서 실행이 이루어진다. 이 실행 콘텍스트는 자신만의 유효 범위(Scope)를 갖는데, 이 과정에서 클로저를 구현할 수 있다. 이것은 자바스크립트를 제대로 이해하기 위한 핵심 개념이지만, 이해하기가 쉽지는 않다.

 

자바스크립트와 객체지향 프로그래밍

자바스크립트는 클래스를 지원하지 않지만 객체지향 프로그래밍이 가능하다. 프로토타입 체인과 클로저로 객체지향 프로그래밍에서 제시하는 상속, 캡슐화, 정보 은닉 등의 개념을 소화할 수 있다. 실제로 GOF의 디자인 패턴을 자바스크립트로 구현한 코드들이 많이 공개되어 있고, 많은 관심을 받고 있다.

 

자바스크립트와 함수형 프로그래밍

자바스크립트는 함수형 프로그래밍이 가능하다. 함수형 프로그래밍은 높은 수준의 모듈화를 가능케 하는 매우 효율적인 프로그래밍 방법이다. 자바스크립트는 주요 특성인 일급 객체로서의 함수 특성과 클로저를 활용하여 이를 가능케 한다. 하지만 이 때문에 가독성을 떨어뜨리기도 한다. 과도하게 클로저가 사용되었거나, 함수형 프로그래밍 기법으로 구현된 코드는 제삼자가 해석하기가 상당히 난해하다.

 

자바스크립트의 단점

자바스크립트는 굉장히 유연한 언어이고 뛰어난 표현력을 가지고 있다. 하지만 이러한 특성 때문에 종종 디버깅에 어려움을 겪게 된다. 특히, 느슨한 타입 체크는 개발자에게 타입 체크에 대한 자유를 주지만, 컴파일 타임에서 잡지 못하는 오류는 고스란히 런타임 오류로 발견된다.

또, 자바스크립트를 둘러싼 중요한 논란 중 하나가 전역 객체의 존재이다. 최상위 레벨의 객체들은 모두 전역 객체 안에 위치하는데, 이는 이름 충돌의 위험성이 있다. 프로그래머는 이 부분에 대해 신경 쓰는 것을 게을리하면 안 된다.

 

반응형