JavaScript와 ECMAScript의 차이점

php中世界最好的语言
풀어 주다: 2017-11-17 10:16:49
원래의
1868명이 탐색했습니다.

많은 사람들이 JavaScript와 ECMAScript의 관계가 무엇인지 묻습니다. 이전에는 그들 사이에 차이점이 있었나요? 오늘은 JavaScript와 ECMAScript에 관한 이러한 문제에 대해 자세히 설명하겠습니다.

Baidu에서 "JavaScript와 ECMAScript의 차이점"을 검색해 보았습니다.

결국 나는 엄청나게 혼란스럽고 상충되는 결과에 완전히 실망했습니다.

"ECMAScript는 "

" JavaScript입니다. "

" JavaScript는 ECMAScript 표준의 구현입니다. "

" ECMAScript는 "JavaScript는 ECMAScript의 포크입니다."

"ECMAScript는 JavaScript입니다."

잠깐만요. 울지 마. 나는 마음을 다잡고 고통스럽지만 유익한 연구를 하기로 결정했습니다.

이 기사는 JavaScript와 ECMAScript의 차이점에 대한 나의 현재 이해를 나타냅니다. 이 글은 JavaScript에 익숙하지만 이것이 ECMAScript, 웹 브라우저, Babel 등과 어떻게 관련되는지 더 명확하게 이해하고 싶은 사람들을 위한 것입니다. 추가적으로 스크립팅 언어, JavaScript 엔진 및 JavaScript 런타임에 대해 배우게 됩니다.

그러니 힘내세요.

JavaScript/ECMAScript 용어집

다음은 일관성과 명확성에 중점을 두고 설계된 일련의 정의입니다. 정의가 완료율이 아닙니다. 이는 JavaScript와 ECMAScript 간의 연결과 관계를 높은 수준에서 설명하도록 설계되었습니다.

더 이상 고민하지 말고 시작해 보세요.

Ecma International

과학과 기술의 표준을 설정하는 조직입니다.

(Ecma에서 개발한 것은 아니지만) "표준" 예를 들기 위해 우리가 사용한 키보드를 사용해 보겠습니다. 대부분의 문자가 같은 순서로 되어 있고, 스페이스바, Enter 키, 화살표 키, 숫자가 맨 윗줄에 있나요? 이는 대부분의 키보드 제조업체가 QWERTY 레이아웃 표준을 기반으로 키보드 디자인을 기반으로 하기 때문입니다.

ECMA-262 Ecma International에서 발행한 표준입니다. 여기에는 범용 스크립팅 언어에 대한 사양이 포함되어 있습니다. ECMA-262는 QWERTY와 유사한 표준이지만 키보드 레이어 사양을 제시하는 대신 ECMAScript라는 스크립팅 언어에 대한 사양을 제시합니다. ECMA-262를 ECMAScript의 참조 번호로 생각하세요.

스크립팅 언어

기존 엔터티 또는 시스템에서 작동하도록 특별히 설계된 프로그래밍 언어입니다.

프로그래밍 언어를 스크립팅 언어로 만드는 방법에 대한 일반적인 아이디어를 보려면 "walk", "run" 및 "jump" 명령을 고려하세요. 이러한 행동에는 사람, 개 또는 비디오 게임 캐릭터 등의 행동을 유도할 무언가가 필요합니다. "walk", "run" 및 "jump"는 이러한 명령을 실행하는 연산자가 없으면 의미가 없습니다. 이 작업 세트는 외부 엔터티 조작에 초점을 맞춘 스크립팅 언어와 유사합니다.

ECMAScript

ECMA-262에 정의된 사양은 범용 스크립트 언어를 작성하기 위한 표준입니다.


동의어: ECMAScript 사양

단, ECMA-262는 스크립팅 언어 사양 ECMAScript를 나타내는 표준의 이름입니다.

ECMAScript는 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공합니다. 이는 ECMAScript 호환으로 간주되는 기준입니다.

JavaScript

ECMAScript 사양을 따르는 범용 스크립트 언어입니다.


ECMAScript 언어의 분기 버전입니다.

JavaScript는 제가 프로그래밍하기를 좋아하는 커피 맛의 언어입니다(Java 계열 참조, 번역자 주). ECMAScript는 이를 기반으로 하는 사양입니다. ECMAScript 사양을 읽으면 스크립팅 언어를 만드는 방법을 배울 수 있습니다. JavaScript 문서를 읽으면 스크립팅 언어를 사용하는 방법을 배울 수 있습니다.

사람들이 JavaScript를 "ECMAScript 언어의 방언"이라고 부르는 것은 영어, 프랑스어 또는 중국어 방언에 대해 말할 때와 같은 의미입니다. 방언은 대부분의 어휘와 문법을 모국어에서 파생하지만 이러한 차이점을 유지할 가치가 있을 만큼 충분히 벗어납니다.

JavaScript는 몇 가지 차이점을 제외하고 ECMA-262에 설명된 대부분의 ECMAScript 사양을 구현합니다. Mozilla는 JavaScript의 비ECMAScript 언어 기능을 여기에 설명합니다:


JavaScript 엔진 JavaScript 코드를 이해하고 실행할 수 있는 프로그램 또는 해석기입니다.

동의어: JavaScript 인터프리터, JavaScript 구현

JavaScript 엔진은 Chrome의 V8, Firefox의 SpiderMonkey, Edge의 Chakra를 비롯한 웹 브라우저에서 흔히 발견됩니다. 각 엔진은 해당 애플리케이션의 언어 모듈과 같아서 JavaScript 언어의 특정 포크를 지원할 수 있습니다.

JavaScript 엔진은 인간이 언어를 이해하는 브라우저입니다. 일상적인 행동에서 다시 "걷기", "달리기", "점프"를 예로 들면, JavaScript 엔진은 이러한 동작의 의미를 진정으로 이해할 수 있는 기본 메커니즘입니다.

이 비유는 브라우저에 대해 설명하는 데 도움이 될 수 있습니다.

브라우저 성능의 차이

두 사람이 "점프" 명령을 인식할 수도 있지만, 한 사람은 다른 사람보다 명령을 더 빨리 이해하고 처리하기 때문에 다른 사람보다 더 빠르게 명령에 응답할 수 있습니다. 마찬가지로 두 브라우저 모두 JavaScript 코드를 이해하지만 JavaScript 엔진이 더 효율적으로 구현되기 때문에 한 브라우저가 더 빠르게 실행됩니다.

브라우저 지원의 차이 또 다른 예는 같은 언어를 사용하는 사람들 사이에도 차이가 있다는 것입니다. 많은 사람들이 영어를 구사하더라도 일부는 다른 사람들이 모르는 특정 단어, 표현, 문법 규칙을 알고 있을 수 있으며, 그 반대의 경우도 마찬가지입니다. 브라우저에서도 마찬가지입니다. 모든 브라우저 JavaScript 엔진은 JavaScript를 이해하지만 일부 브라우저는 다른 브라우저보다 JavaScript를 더 잘 이해합니다. 이러한 차이점은 JavaScript에 대한 브라우저 지원에 존재합니다.

브라우저 지원에 관해서 사람들은 일반적으로 JavaScript 엔진이 JavaScript를 구문 분석하고 실행하더라도 "JavaScript 호환성"보다는 "ECMAScript 호환성"에 대해 이야기합니다. 이 질문은 다소 복잡하며 다음 표에서 설명할 수 있습니다.

기억하시면 ECMAScript는 스크립팅 언어의 모양을 지정하는 사양입니다. 새로운 ECMAScript 버전을 출시한다고 해서 기존의 모든 JavaScript 엔진에 갑자기 이러한 새로운 기능이 포함되는 것은 아닙니다. 해당 JavaScript 엔진을 담당하는 그룹이나 조직이 최신 ECMAScript 사양으로 업데이트하고 그에 따른 변경 사항을 채택하기를 원하는지 여부에 따라 다릅니다.


따라서 개발자는 "이 브라우저는 어떤 ECMAScript 버전을 지원합니까?" 또는 "이 브라우저는 어떤 ECMAScript 기능을 지원합니까?"와 같은 질문을 하는 경향이 있습니다. Google, Mozilla 및 Microsoft에서 업데이트를 시작하는지 알고 싶어합니다. V8, SpiderMonkey 및 Chakra와 같은 브라우저의 JavaScript 엔진은 최신 ECMAScript 기능을 갖습니다.


ECMASCript 호환성 목록은 이와 같은 질문에 대한 답변을 얻을 수 있는 훌륭한 참고 자료입니다.

ECMAScript의 새 버전이 출시되면 JavaScript 엔진은 모든 업데이트를 한 번에 통합하지 않습니다. 그들은 점차적으로 ECMAScript 기능을 추가할 것이며 이는 Firefox의 JavaScript 변경 기록에서 분명하게 드러납니다:

JavaScript Runtime

JavaScript 코드가 실행되고 JavaScript 엔진에 의해 해석되는 환경. 런타임은 JavaScript가 실행하고 조작할 수 있는 호스트 개체를 제공합니다.

동의어: 호스트 환경 JavaScript 런타임은 스크립팅 언어 정의에 언급된 "기존 엔터티 또는 시스템"입니다. 코드는 JavaScript 엔진을 통해 전달되며 일단 구문 분석되고 이해되면 엔터티 또는 시스템은 해석된 동작을 수행합니다. 개가 걷고, 인간이 달리고, 비디오 게임 미션이 점프합니다(또는 위의 예에서와 같이 파괴를 유발합니다). 애플리케이션은 런타임 시 "호스트 개체"를 제공하여 JavaScript 스크립트에서 자체적으로 사용할 수 있게 됩니다. 클라이언트의 경우 JavaScript 런타임은 웹 브라우저일 수 있으며, 이 경우 창이나 HTML 문서와 같은 호스트 개체를 조작에 사용할 수 있습니다. 창이나 문서 호스팅 개체를 사용해 본 적이 있나요? 보기 및 문서 개체는 실제로 핵심 JavaScript 언어의 일부가 아닙니다. 이는 JavaScript 호스팅 환경 역할을 하는 브라우저에서 제공하는 개체인 웹 API입니다. 서버 측의 경우 JavaScript 런타임은 Node.js입니다. 파일 시스템, 처리, 요청 등 서버 관련 호스팅 개체는 Node.js에서 제공됩니다. 흥미로운 점은 서로 다른 JavaScript 런타임이 동일한 JavaScript 엔진을 공유할 수 있다는 것입니다. 예를 들어 V8은 완전히 다른 두 환경인 Google Chrome과 Node.js에서 모두 사용되는 JavaScript 엔진입니다.

ECMAScript 6

ECMA-262 표준의 여섯 번째 버전이며 ECMAScript 사양에 대한 중요한 변경 및 개선 사항이 포함되어 있습니다.

동의어: ES6, ES2015 및 ECMAScript 2015

이 ECMAScript 버전은 이름이 ES6에서 ES2015로 변경되었습니다. 이는 Ecma International이 ECMAScript를 1년에 한 번 출시하기로 결정했기 때문입니다. 이에 따라 Ecma International은 매년 출시되는 버전을 기반으로 ECMAScript 사양의 새 버전을 명명하기 시작했습니다. 간단히 말해서 ES6과 ES2015는 동일한 것에 대한 두 가지 다른 이름입니다.

Babel

ES6 코드를 ES5 코드로 변환할 수 있는 트랜스파일러입니다.

개발자는 ES6의 화려한 새 기능을 활용할 수 있지만 웹 애플리케이션의 브라우저 간 호환성 문제에 대해 걱정합니다. 이 기사를 작성하는 시점에서 Edge와 Internet Explorer는 ES6 사양의 기능을 완전히 지원하지 않습니다.

관심 있는 개발자는 Bable을 사용하여 ES6 코드를 기능은 동일하지만 ES5 기능을 사용하는 버전으로 변환할 수 있습니다. 모든 주요 브라우저는 ES5를 완벽하게 지원하므로 문제에 대해 걱정하지 않고 코드를 실행할 수 있습니다.

흥미로운 일화

JavaScript 및 ECMAScript에 대한 이 정보가 도움이 되기를 바랍니다. 마무리하기 전에 저와 같은 초보 웹 개발자에게 도움이 될 정보를 좀 더 공유하고 싶습니다.

닭이 먼저냐 달걀이 먼저냐

JavaScript는 1996년에 개발되었기 때문에 혼란스러운 역사가 있습니다. 이후 1997년 표준화 작업을 위해 ECMA International에 제출되었으며, 이로 인해 ECMAScript가 탄생하게 되었습니다. 동시에 JavaScript는 ECMAScript 사양과 일치하므로 JavaScript는 ECMAScript에 따라 구현된 예라고 할 수 있습니다.

우리에게 흥미로운 점은 ECMAScript는 JavaScript를 기반으로 하고, JavaScript는 ECMAScript를 기반으로 한다는 것입니다.

알겠습니다. 사람이 시간을 여행하여 자신의 부모가 되는 것처럼 들린다는 것은 압니다. 약간 모순적이지만 생각해 보면 여전히 꽤 우스꽝스럽습니다.

결론

이 기사를 읽으면서 많은 즐거움을 얻었지만 여전히 매우 유익합니다. 다시 작별 인사를 해야 해요.

질문, 의견, 제안, 고려 사항이 있는 경우 알려주시기 바랍니다.

이 글을 읽어주셔서 정말 감사합니다!

관련 권장 사항:

JavaScript 단순 복귀 코드 및 설명 설명

드롭다운 메뉴의 JavaScript 구현 예

ECMAScript 기본 지식_javascript 기술

위 내용은 JavaScript와 ECMAScript의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!