1. JavaScript의 개요
JavaScript 란 무엇인가
JavaScript는 여러 브라우저와 운영체에서 사용 가능한 객체 지향 스크립트
언어입니다.
JavaScript는 작고 가벼운 언어입니다. 독립적인 언어보다 불편할 수 있지만,
웹 브라우저와 같은 다른 제품과 애플리케이션을 쉽게 통합 할 수 있도록
설계되어 있습니다.
JavaScript는 자신이 실행되는 환경의 기능들을 연결시키고 그것을
프로그램으로 제어 할 수 있습니다.
코어 JavaScript는 Array , Date , Math 같은 중요 내장 객체들과 연산자, 제어
구조, 문장 등 언어 요소의 핵심 집합으로 구성됩니다.
코어
JavaScript는 객체를 추가함으로써 다양한 용도로 확장 할 수 있습니다.
- 클라이언트 측 JavaScript 는 브라우저 (Navigator 또는 다른 웹 브라우저)와 그 Document Object Model (DOM)을 제어하는 개체를 추가함으로써 기본 언어를 확장하고 있습니다. 클라이언트 측 확장의 예로 응용 프로그램이 HTML 양식에 요소를 배치하고 마우스 클릭이나 폼에 입력, 페이지 탐색 등 사용자 이벤트에 반응 할 수 있게 됩니다.
- 서버 측 JavaScript 는 서버에서 JavaScript의 실행과 관련된 개체를 추가함으로써 기본 언어를 확장할 수 있습니다. 예를 들어 관계형 데이터베이스와 통신하거나, 또 다른 응용프로그램이 호출하도록 하여 정보의 연속성을 실현하거나, 서버에서 파일 작업을 수행 할 수 있습니다.
JavaScript의 LiveConnect 기능을 사용하면 Java와 JavaScript 코드간에 서로
통신 할 수 있습니다.
JavaSctipt에서 Java의 객체의 인스턴스를
생성하고 해당 공용 메소드와 필드에 액세스 할 수 있습니다. Java에서
JavaScript 개체와 속성, 메서드에 액세스 할 수 있습니다.
JavaScript는 Netscape에 의해 만들어져 또한 JavaScript가 처음 사용 된 것은 Netscape 브라우저였습니다.
JavaScript와 Java
JavaScript와 Java는 비슷한 부분도 있지만, 기본적으로 다릅니다.
JavaScript 언어는 Java와 공통점이 있지만, Java의 정적 타이핑이나
엄격한 타입 체크는 제공하지 않습니다.
JavaScript는 대부분의 Java의 구문과 기본 제어 흐름 구성을 지원하고
있습니다.
Java가 선언에 의해 구축되는 클래스의 컴파일 타임 시스템인데 반해
JavaScript에서는 숫자, 불리언, 문자열을 나타내는 소수의 데이터 형을
기반으로 한 런타임 시스템 방식입니다.
JavaScript는 일반적인 언어의 클래스 기반 개체 모델이 아닌 프로토 타입
기반의 객체 모델을 채용하고 있습니다. 프로토 타입 기반 모델은 동적 상속이
가능하게 되어 있습니다. 즉 상속되는 것은 개별 개체에 따라 다를 수
있습니다.
JavaScript에서는 함수 선언을 반드시 필요로 하지 않습니다.
자바스크립트는 함수를 까다롭게 정의하지 않습니다. 함수는 객체의 속성이 될
수도 있고 느슨하게 형식화된 메소드로 호출 할 수도 있습니다.
JavaScript는 Java에 비해 매우 자유로운 형식의 언어입니다. 변수, 클래스,
메소드를 선언하지 않아도 됩니다.
메소드가 public 또는 private 또는 protected 또는 등 신경 쓸 필요 없이
인터페이스를 구현할 필요도 없습니다. 변수, 함수가 반환 형식은 명백하게
형식화 되어있는 것은 아닙니다.
Java는 빠른 실행과 형식 안전성을 추구 하여 설계된 클래스 기반 프로그래밍
언어입니다.
형식 안전성은 예를 들면, Java의 정수를 개체 참조로
캐스팅하거나 Java의 바이트 코드를 수정하여 개인 메모리에 액세스 할 수
없다는 것입니다.
Java의 클래스 기반 모델은 프로그램은 유일하게 클래스와 메소드에서
이루어진다는 것을 의미합니다. Java의 클래스 상속과 강력한 타입 유효성은
일반적으로 밀접하게 결합 된 개체의 계층 구조를 필요로 합니다. 이러한
요구사항에 따라 Java 프로그래밍 JavaScript보다 더 복잡합니다.
반면 JavaScript는 HyperTalk 나 dBASE와 같은 더 작은 동적 타입 언어의 가 추구하는 방식을 계승하고 있습니다. 이러한 스크립트는 언어 구문이 간결하고, 특별한 고유 기능을 가지고 있고, 객체 생성의 제약이 적기 때문에 이런 프로그래밍 도구가 널리 사용되고 있습니다.
표 1.1 : JavaScript와 Java 비교
JavaScript | Java |
---|---|
객체 지향. 개체 타입의 차이가 없다. 상속은 프로토 타입 메커니즘을 통해 이루어 지며, 속성과 메소드는 개체에 동적으로 추가 할 수 있다. | 클래스 또는 인스턴스에 속성과 메소드를 동적으로 추가 할 수 없다.클래스 기반. 개체는 클래스와 인스턴스로 나뉜다. 모든 상속은 클래스 계층을 통해 이루어진다. 클래스 또는 인스턴스에 속성과 메소드를 동적으로 추가 할 수 없다. |
변수의 데이터 형식은 선언되지 않는다. | (동적 타이핑) 변수의 데이터 형식 선언이 필수 (정적 타이핑). |
자동으로 하드 디스크에 쓸 수 없습니다. | 자동으로 하드 디스크에 쓸 수 없습니다. |
JavaScript와 Java의 차이에 대한 보다 자세한 정보는 객체 모델에 관한 자세한 내용을 참조하십시오.
JavaScript와 ECMAScript 사양
JavaScript는 Netscape에 의해 만들어졌습니다. 그리고 JavaScript가 처음 사용
된 것은 Netscape 브라우저였습니다.
Netscape는 유럽의 정보 통신
시스템 분야의 표준화 단체 Ecma International (옛 ECMA - European Computer
Manufacturers Association; 유럽 전자 계산기 공업회)에 코어 JavaScript 를
제출 하여 국제 프로그래밍 언어 표준으로 채택 되었습니다.
이 표준화
된 버전의 JavaScript는 ECMAScript라고 표준을 지원하는 모든 응용
프로그램에서 동일하게 작동합니다. 기업이 개방형 표준 언어를 사용함으로써
기업 자체의 JavaScript 구현을 개발 할 수 있습니다. ECMAScript 표준은
ECMA-262 사양으로 문서화되어 있습니다.
ECMA-262 표준은 ISO (International Organization for Standardization; 국제
표준화기구)에서 ISO-16262으로도 승인 되었습니다.
ECMA-262의 PDF 버전
이 Mozilla 웹 사이트에 있습니다. 또한 Ecma International 웹 사이트에
사양이 나와 있습니다. ECMAScript 명세는 Document Object Model (DOM)은 나와
있지 않습니다. 이것은 World Wide Web Consortium (W3C) 에 의해 표준화되어
있습니다. DOM은 HTML 문서 개체를 스크립트에서 처리 방법을 정의하고
있습니다.
JavaScript 버전과 ECMAScript 버전과의 관계
Netscape는 Ecma International과 밀접하게 연계하여 ECMAScript 사양
(ECMA-262)를 만들었습니다.
다음 표에서는 JavaScript 버전과 ECMAScript 버전과의 관계에 대해
설명합니다.
JavaScript 버전 | ECMAScript 버전과의 관계 |
---|---|
JavaScript 1.1 | ECMA-262 초판은 JavaScript 1.1에 근거한다. |
JavaScript 1.2 |
JavaScript 1.2 릴리스에는 ECMA-262는 미완성이었다. JavaScript 1.2은 다음과 같은 이유에서 ECMA-262 초판과 완전히 호환되지 않습 니다. Netscape는 ECMA-262는 검토되지 않은 추가 기능을 JavaScript 1.2에 탑재했다. ECMA-262는 Unicode를 이용한 국제화 및 모든 플랫폼에서 동일한 동작 두 가지 새로운 기능을 추가했다. Date 객체 등 플랫폼에 의존하고 있고, 플랫폼 고유의 동작을 이용하거나하는 JavaScript 1.2의 기능도 있었다 |
JavaScript 1.3 |
JavaScript 1.3은 ECMA-262 초판과 완전 호환. == 및! =를 제외하고, JavaScript 1.2의 모든 기능을 그대로 유지하면서 JavaScript 1.2 ECMA-262과의 불일치를 JavaScript 1.3 해소했다. 이것은 ECMA-262와 일치하도록 변경되었다. |
JavaScript 1.4 |
JavaScript 1.4은 ECMA-262 초판과 완전 호환. JavaScript 1.4 릴리스에는 ECMAScript 사양 제 3 판은 미완성이었다. |
JavaScript 1.5 | JavaScript 1.5은 ECMA-262 3 판과 완전히 호환. |
표 1.2 : JavaScript 버전과 ECMAScript 버전
주의 : ECMA-262 2 판은 소규모 개정과 초판 사양의 버그 수정으로 구성되어
있습니다.
Ecma International의 TC39 워킹 그룹이 현재 ECMAScript 제 4 판에 착수하고
있습니다. 이것은 JavaScript 릴리스 인 JavaScript 2.0을 지원하는 것입니다.
코어 JavaScript 레퍼런스(링크)는 어떤 언어 기능이 ECMAScript에 대응하고 있는지를 보여줍니다.
JavaScript는 ECMAScript 사양에 포함되지 않는 기능도 항상 탑재되어
있습니다.
즉, JavaScript는 추가 기능을 제공하면서도 ECMAScript와 호환 있다는
것입니다.
JavaScript 문서와 ECMAScript 명세
ECMAScript 명세는 ECMAScript를 구현하는데 요구 사항에 대한 요약입니다.
따라서 JavaScript의 특정 기능이 다른 ECMAScript에서 지원(구현)
여부를 알고 싶은 경우에 유용합니다. ECMAScript에서 지원하는 기능 만
사용하여 JavaScript 코드를 사용하고 있다면, ECMAScript 사양 문서를 모두
읽을 필요가 있을지도 모릅니다.
ECMAScript 문서는 스크립트 프로그래머에게 도움을 줄 의도로 작성되지 않았습니다. 따라서 스크립트를 작성에 대한 내용은 JavaScript 문서를 사용하십시오.
JavaScript와 ECMAScript 용어
ECMAScript 명세서는 JavaScript 프로그래머에게는 생소한 단어나 구문이 사용
됩니다.
언어의 설명은 ECMAScript라는 것으로 다를 수 있지만, 언어
자체는 동일합니다. JavaScript는 ECMAScript 사양에 설명되어있는 기능을
지원하고 있습니다.
JavaScript 문서는 JavaScript 프로그래머에게 적당한 언어의 측면을 설명하고
있습니다. 예를 들어,
- JavaScript 문서는 Global 개체에 대해 논의하지
않습니다. 이것은 프로그래머가 직접 사용하는 것이 아니기 때문입니다. Global
객체의 메소드 및 속성에 관해서는, 프로그래머가 사용하는 것이고, JavaScript
문서에서 논의되지만 최상위 함수 및 속성과 같이 부릅니다.
- 매개 변수
없이 (제로 인수)의 Number 및 String 개체 생성자는 JavaScript 문서에서는
논의하지 않습니다. 생성되는 것이 거의 쓸모 없기 때문입니다. Number
생성자에 인자가 없다면 +0을 반환하고, String 생성자에 인자가 없다면 ""(빈
문자열)을 반환합니다.
저작권 공지
이 문서의 모든 저작권은 Mozilla.org에 있습니다. 이 문서는 "모질라
기여자"들에 의해 작성 되었습니다.
원문 보기
저희가 한글로 번역한 2차적저작물에 대한 저작권 역시 Mozilla.org에
있습니다.