※ 본 포스트는 Inside Javascript (저자: 송형주, 고현준)를 학습한 내용을 정리한 포스트입니다.
제 이해를 기준으로 작성하기 때문에 잘못된 점 있다면 알려주시면 감사하겠습니다 :)
자바스크립트란?
자바스크립트는 웹 브라우저에서 동작하는 스크립트 언어이다.
초창기의 자바스크립트는 웹 페이지 제작의 보조적인 역할을 담당하는데 그쳤다. 대부분의 로직이 웹 서버에서 실행되었고 자바스크립트는 단지 웹 서버에서 받은 HTML, CSS, 데이터를 랜더링 해주는 수준이었다.
하지만 웹의 발전과 함께 서버에서 담당하던 상당 부분이 웹 브라우저로 이동하게 되면서 자바스크립트 또한 크게 성장하게 된다. 특히, Node.js의 등장으로 자바스크립트를 이용한 서버 개발이 활발해지면서 더욱 많은 개발자들이 자자바스크립트를 사용하게 되었다.
JavaScript 활용 범위
예전에 자바스크립트가 그저 웹 브라우저를 랜더링하는 수준에 그쳤다면 지금 자바스크립트는 훨씬 다양하고 핵심적인 역할을 하고 있다.
자바스크립트를 이용하면 JQuery, backbone.js, react.js, vue.js, angular.js 등의 라이브러리를 이용한 웹 개발이 가능하다.
또한, Node.js의 등장으로 자바스크립트를 이용한 서버 개발도 가능하다.
마지막으로 웹이 하나의 플랫폼으로 진화하면서 애플리케이션 개발에도 사용된다. 자바스크립트는 특히 웹 기반 플랫폼에서 구동되는 애플리케이션에 필수적인 요소이다.
JavaScript 핵심 개념
1. 객체
자바스크립트의 대부분은 ```객체``` 이다. 자바스크립트의 기본 데이터 타입인 boolean, number, string과 특수값인 null, undefined를 제외한 모든 데이터는 객체가 된다. 이마저도 앞의 3가지 기본 데이터 타입은 모두 객체처럼 사용할 수 있다. 따라서 자바스크립트는 null, undefined를 제외하면 모든 것을 객체로 다룰 수 있다.
2. 함수
null과 undefined를 제외한 모든 것을 객체로 만드는 자바스크립트는 함수마저도 객체로 취급한다. 함수는 자바스크립트에서 일급 객체(first class Object)로 다뤄지는 중요한 개념이다.
3. 프로토타입
모든 객체는 숨겨진 링크인 프로토타입을 가진다. 이 링크는 생성자의 프로토 타입 객체를 가르킨다. 이 링크를 통해 자바스크립트는 다양한 자료구조를 작성할 수 있다.
4. 실행 컨텍스트와 클로저
자바스크립트는 자신만의 독특한 과정을 통해 실행 컨텍스트를 만들고 그 안에서 실행이 이뤄진다. 이 실행 컨텍스트는 자신만의 실행 범위를 가지는 데 그 과정에서 클로저를 구현할 수 있다.
5. 객체지향 프로그래밍
자바스크립트는 클래스를 지원하지 않지만 프로토타입 체인과 클로저를 활용하여 객체지향 프로그래밍의 핵심 개념인 상속, 캡슐화, 정보 은닉의 개념을 소화할 수 있다.
6. 함수형 프로그래밍
자바스크립트는 함수형 프로그래밍이 가능하다. 주요 특성인 일급 객체로서의 함수 특성과 클로저는 이를 가능하게 해주는 특성이다.
JavaScript의 단점
1. 느슨한 타입 체크
자바스크립트는 유연한 특성을 지니지만 이 때문에 종종 문제가 발생할 수 있다. 그 문제 중 하나가 느슨한 타입 체크로 인한 런타임 오류의 발생이다.
2. 전역 객체의 존재
전역 객체의 존재는 이름 충돌의 위험성을 내포하여 의도하지 않은 문제를 야기할 수 있다.