곰돌이 놀이터

[JavaScript] 자바스크립트란? 본문

Front-End/JavaScript

[JavaScript] 자바스크립트란?

달나라 곰돌이 2018. 6. 26. 08:56

 

 자바스크립트 란? 

 

자바스크립트가 처음 등장했을 때는 웹 브라우저(클라이언트측)에서 데이터 유효성검사등을 담당하는 스크립트 언어에 불과했다.

그러나 현재는 브라우저 창과 그 컨텐츠의 거의 모든 부분에 상호작용을 하며, 클로저나 익명(람다)함수 및, 메타프로그래밍 까지 처리하며 복잡한 계산과 상호작용을 하는 완전한 프로그래밍 언어가 되었다.

또한 JQuery의 등장으로 쉽게 DOM을 핸들링 할 수 있고, 특히 Node.js의 등장으로 인해 자바스크립트를 이용한 서버개발도 가능하게 되었다.

 

■ 역사

- 1995년 입력 유효성 검사를 위해 처음 등장. ( 모뎀시절 서버 왕복 비용때문)

- 네스케이프와 선 마이크로시스템즈가 함께 1.0을 만듦.

- 마이크로소프트도 IE3와 함께 JScript 를 만듦.

- 표준을 위해 ECMAScript라는 이름의 스크립트 언어를 정의.

- 지금은 클로저, 익명함수, 메타프로그래밍 까지 가능한 프로그래밍 언어로 자리잡음.

 

■ 특징

1. 자바스크립트는 객체 기반의 스크립트 언어입니다.

2. 자바스크립트는 동적이며, 타입을 명시할 필요가 없는 인터프리터 언어입니다.

 

3. 자바스크립트는 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현할 수 있습니다.

 

※ 인터프리터 언어

C언어와 같은 언어는 소스 파일을 작성한 후, 해당 파일을 컴파일(compile)하여 사용자가 실행할 수 있는 실행 파일(.exe)로 만들어 사용한다.
하지만 인터프리터 언어는 이러한 컴파일 작업을 거치지 않고, 소스 코드를 바로 실행할 수 있는 언어를 의미한다.
자바스크립트는 웹 브라우저에 포함된 자바스크립트 인터프리터가 소스 코드를 직접 해석하여 바로 실행해준다.

 

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

1. 코어( ECMAScript )

2. 문서 객체 모델( DOM )

3. 브라우저 객체 모델( BOM )

 

※ Javascript = ECMAScript + DOM + BOM

 

■ 코어( ECMAScript )

 - 자바스크립트의 핵심 기능

 

문법, 타입, 선언문, 키워드, 예약어, 연산자, 객체등 언어의 저수준에 해당하는 부분이다.

'ECMAScript' 언어는 웹 브라우저에 종속되지 않으며, 브라우저는 ECMAScript를 구현하는 '호스팅환경'일 뿐이다.

이러한 호스트환경(브라우저, Node.js, 어도비 플래시)은 ECMAScript를 기본적으로 구현하고 DOM, BOM등과 같은 확장을 제공한다.

 

■ 문서 객체 모델( DOM, Document Object Model )

- 웹 페이지 콘텐츠를 조작하는 메서드와 인터페이스

 

XML을 HTML에서 사용할 수 있도록 확장된 애플리케이션 프로그래밍 인터페이스다.

DOM은 전체페이지를 노드 계층 구조로 변환하며, HTML페이지의 각 부분은 각기 다른 데이터를 포함하는 다양한 타입의 노드로 표현된다.

 

■ 브라우저 객체 모델( BOM, Browser Object Model )

- 브라우저와 상호작용하는 메서드와 인터페이스

 

BOM을 이용하면 브라우저 창에 접근하고 조작할 수 있다.
ex)

  • 브라우저 창을 새로 띄움
  • 브라우저 창을 움직이거나 크기를 조절
  • 브라우저의 실제 정보를 반환하는 navigator 객체
  • 사용자의 화면 해사동에 대한 정보를 반환하는 location 객체
  • 쿠키 지원
  • XMLHttpRequest 와 같은 커스텀 객체

■ 자바와 자바스크립트
자바와 자바스크립트는 그 이름만 놓고 보면 서로 관련이 있는 언어로 생각되기 쉽다.하지만 두 언어는 서로 직접적인 관련은 없으며, 비슷한 점보다는 다른 점이 훨씬 많다. 

문법상 비슷한 부분은 두 언어의 문법이 모두 C언어를 기반으로 만들어졌기 때문이다.

 

 자바 자바스크립트 
 컴파일 언어  인터프리터 언어 
 타입 검사를 업격하게 함   타입을 명시하지 않음
 클래스( class ) 기반의 객지향 언어  프로토타입( prototype ) 기반의 객체 지향 언어

 

 참고 

 

http://boycoding.tistory.com/2

http://tcpschool.com/javascript/intro

http://seojeee.tumblr.com/post/79965313038/1%EC%9E%A5-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

Comments