Blog

자바스크립트란 무엇인가

March 20, 2014

자바스크립트란 무엇인가

목차

같이 공부하려고 페이스북 스터디 그룹을 3월 13일에 만들었는데, 일주일도 안되서 멤버수가 200분을 훨씬 넘겼다. 그룹과 관련된 이것저것을 챙기다보다 정작 중요한 공부가 일주일이나 늦춰졌다. 가이드북으로 "프론트엔드 개발자를 위한 자바스크립트(2013 인사이트, 한선용 옮김)"를 정했고 첫 1장을 간단하게 요약한다.

1장. 자바스크립트란 무엇인가

1995년 처음 등장할 때 주요 목적은 서버 언어에서 담당하던 입력 유효성을 검사하기 위해서였다.

자바스크립트는 완전히 익히려면 자바스크립트의 성격과 역사, 한계에 대해 이해해야 한다.

1.1 간추린 역사

넷스케이프의 브랜든 아이흐가 처음엔 Mocha, 나중에 LiveScript라고 불린 스크립트 언어를 개발했는데 넷스케이프 내비게이터 2에서 브라우저와 서버(서버쪽은 LiveWire) 모두에서 사용하려는 것이었으며, 출시하기 직전 자바의 인기에 편승하기 위해 자바스크립트로 이름을 바꾸었다.

IE 3에선 저작권 문제를 피하기 위해 JScript라고 이름지었다. 이는 자바스크립트가 하나의 언어로 본격적으로 개발되기 시작한 의미 있는 날이다.

1997년 자바스크립트 1.1이 ECMA에 제안되었다. ECMA는 TC39 위원회에서 “문법과 의미를 표준화하여 일반적인 목적에 쓸 수 있고 플랫폼을 가리지 않으며 제조사에 중립인 스크립트 언어”를 만들기로 했으며, 1998년 ISO와 IEC에서도 ECMAScript를 표준(ISO/IEC-16262)으로 받아들였다.

1.2 자바스크립트 구현

자바스크립트 구현은 다음 세 가지로 나뉜다.

  • 코어 (ECMAScript)
  • 문서 객체 모델 (DOM:Document Object Model)
  • 브라우저 객체 모델 (BOM:Browser Object Model)

1.2.1 ECMAScript

ECMAScript ‘판’

ECMA-262의 최근판은 2009년에 만들어진 5판이며, 6판은 현재 2014년 12월 예정이다.

ECMA-262 3판이야말로 표준에 대한 첫 번째 진짜 업데이트이며, 진정한 프로그래밍 언어로 간주하는 이유다. ECMAScript 3.1이 ECMA-262 5판이라는 이름으로 2009년 12월 3일 공식 발표되었다.

웹 브라우저의 ECMAScript 지원

넷스케이프 내비게이터 4.06의 자바스크립트 1.3 버전이 ECMA-262 초판과 완전히 호환되었으며, 2008년부터 주요 웹 브라우저 모두 ECMA-262 3판을 준수하였다.

IE 8은 5판을 구현한 최초의 브라우저였으며 IE 9은 5판을 완전히 지원한다. 곧이어 파이어폭스 4도.

1.2.2 문서 객체 모델(DOM)

DOM은 XML을 HTML에서 사용할 수 있도록 확장한 API이며, 전체 페이지를 노드의 계층 구조로 변환한다. HTML(XML) 페이지의 부분을 데이터를 포함하는 다양한 타입의 트리 노드로 만들고 이를 통해 문서의 콘텐츠와 구조를 자유롭게 수정할 수 있다.

DOM이 필요한 이유

브라우저별로 다른 DHTML을 지원하면서 개발자들은 새로고침 없이 콘텐츠의 모양을 바꿀 수 있게 되었으나 브라우저 별로 HTML 페이지를 만들어야 하는 재앙이 발생했다. W3C에서 DOM 관련 작업을 시작했고 레벨 1,2,3가 차례대로 나왔다. 레벨 0는 W3C 작업 이전에 IE 4.0과 넷스케이프 내비게이터 4.0이 지원했던 DHTML을 말한다.

1.2.3 브라우저 객체 모델(BOM)

브라우저 창에 접근하고 조작할 수 있게 하는 인터페이스이며, 브라우저에 표시된 페이지와는 별개의 컨텍스트에서 브라우저와 상호작용할 수 있다.

표준이 없어 자주 문제를 일으켰으나, HTML5는 BOM을 공식 명세의 일부로 표준화하고 있어 개선되고 있다.

1.3 자바스크립트 버전

넷스케이프 소스코드가 모질라 프로젝트로 오픈소스로 공개될 때 자바스크립트 버전은 1.3이었다.

1.4 요약

자바스크립트는 웹페이지와 상호작용하도록 디자인된 스크립트 언어이며, 핵심 기능을 담당하는 ECMAScript(ECMA-262에서 정의), 웹 페이지 콘텐츠를 조작하는 DOM, 브라우저와 상호작용하는 BOM으로 구현된다.

주요 웹 브라우저들의 ECMAScript 3에 대한 지원은 일반적으로 좋은 편이며 ECMAScript 5에 대한 지원은 나아지고 있지만, DOM 지원은 편차가 심하다. BOM은 최근에야 HTML5에서 표준화되고 있으므로 일부 외에는 각기 다르다.

요약자 후기

관련 글들