JavaScript 란 무엇입니까?


95

이 모든 것은 W3C HTML Validator 와 같은 JavaScript 적합성에 대한 웹 페이지 를 테스트하는 방법을 찾고 있었을 때 시작되었습니다 . 아직 찾지 못했습니다. 알고 계시다면 알려주십시오.

  1. 공식 JavaScript 페이지를 찾아 ECMA Script를 찾았습니다 . 이 사람들은 스크립팅 언어를 표준화하고 (더 이상 JavaScript라고 부르지 않습니다!) ECMA-262 ( Wikipedia ) 라고 불렀습니다 . 최신작은 Edition 5.1입니다

  2. JavaScript는 Mozilla Corporation에서 개발했으며 마지막 안정 버전은 1.8.5 (이것 참조 )이며 ECMA의 에디션 5.1을 기반으로합니다.

  3. 링크 된 위키 백과 페이지 방언을 언급하고있다. Mozilla의 JavaScript 1.8.5는 JScript 9 (IE) 및 JavaScript (Chrome의 V8 [ Wiki ]) 및 기타 여러 언어와 함께 방언으로 표시됩니다 . JavaScript 1.8.5는 ECMA-262의 파생물이며 SpiderMonkey [ Wiki ]는이를 실행하는 엔진이라는 것을 이해하고 있습니까? Chrome에는 자체 방언이 있으며 V8 엔진이이를 실행하는 프로그램입니까?

ECMA-262를 기반으로 한 이러한 모든 방언에서 더 이상 이해할 수없는 것은 " JavaScript 란 무엇입니까 ?"입니다. 진정한 크로스 브라우저 스크립팅 언어가 있습니까? 다양한 구현 자들이 모여서 방언의 상호 호환성에 동의합니까? 이 노력이 ECMA입니까?


10
Javascript라고하는 것과 관련이없는 ECMA 언어 인 ActionScript를 언급하지 않았습니다.
DaveRandom

4
적합성에 대해서는별로 중요하지 않지만 (이미 강조 표시 한 바와 같이) jslint는 코드 확인에 매우 좋습니다.
SomeKittens

2
@MadaraUchiha- "jQuery 만 사용하면됩니다. 모든 것이 정상입니다." 괜찮을 것입니다. 이것이 제가 연구를 시작한 이유입니다. 내 사이트 bharath.lohray.com 은 Chrome 및 Firefox에서 잘 작동하며 W3C 유효성 검사기는 오류를 생성하지 않지만 최신 IE에서는 시간이 많이 걸립니다! 또한 anybrowser.org/campaign 에있는 사람들의 아이디어를 좋아하는 한 진정한 브라우저가 될 수는 없습니다!
주님로.

7
페이지 정보 스크롤이 매우 성가시다. IMO 만 "주"라는 제목은 당신이 실제로 주님이더라도 지옥처럼 화려하게 들립니다.
NullUserException

11
불필요하게 화려합니다. SE에서 게시물이 위아래로 미끄러지는 것을 볼 수 없습니다. 전문적인 웹 사이트를 목표로하고 있으며 여전히 전환을 원한다면 페이드 인 / 페이드 아웃과 같이 더 신중한 것을 사용하십시오.
NullUserException

답변:


96

거의 모든 성숙한 언어는 사양에 의해 정의되며 컴파일러 또는 해석기는 해당 사양에 정의 된 표준을 따르려고합니다. 그러나 표준이 언어 작성자가 정의하지 않는 한 성공하는 경우는 거의 없습니다.

당신은 찾을 수 있습니다 C ++ 2003 표준C # 4 규격자바 7 사양 및 더 많은 온라인. 이들 중 다수에는 ECMA 또는 ISO 표준화 번호가 있습니다. 이들은 표준을 등록하고 공식화 할 수있는 조직 일뿐입니다.

루비는 역사적으로 약간 다른 방식으로 작업을 수행 했으며 사양으로 실행 가능한 테스트 세트를 사용했습니다 . 따라서 인터프리터를 작성하고 표준 Ruby라고 부르려면 모든 테스트를 통과하는 인터프리터를 작성해야했습니다. 그러나 루비조차도 결국 더 공식적인 사양이 될 것 입니다.

자바 스크립트는 진화 된 방식을 제외하고는 다르지 않습니다.

자바 스크립트는 Netscape에 의해 처음 만들어졌습니다. 그들은 그것을 LiveScript라고 불렀지 만 Java와 비슷해 보였으며 Sun과의 거래를 끊어 Netscape와 Java의 마케팅에 모두 도움이되었습니다. 마이크로 소프트는 VBScript를 가지고 있었으며 (추정 상 손실로 인해) 기본적으로 자바 스크립트를 복사했지만 그 이름은 썬이 소유 한 것이기 때문에 JScript라고 불렀습니다.

그러나 JScript는 구문에서 Javascript와 매우 유사하지만 COM을 많이 사용했습니다. 예를 들어 IE5 및 6은를 사용하여 XMLHttpRequest 객체를 인스턴스화합니다 new ActiveXObject("Microsoft.XMLHTTP");.

그래서, 유사하고 유사하지만 다른 자바 스크립트의 "방언"이 탄생했습니다. 시간이 지남에 따라 IE보다 시장 점유율이 낮은 브라우저를 소유 한 다양한 그룹이 언어를 표준화하려고 시도했으며 수년 동안 Microsoft는 저항했습니다. V8까지.

V8은 빠르다. 완전히 새로운 시장 표준을 세웠습니다. 그것은 다른 모든 것을 가난하게 보이게 만들었습니다.

그리고 IE에 대한 다양한 독점 금지 사건을 통해 IE는 시장 점유율을 잃고있었습니다. 갑자기 표준화를 지원하는 것이 Microsoft의 관심사였습니다. 우리는 아직 없지만 올바른 길을 가고 있습니다.

한편 V8은 오픈 소스 였기 때문에 사람들은 Node.JS 와 같은 빠른 자바 스크립트 파서에 대한 새로운 용도를 생각할 수 있었습니다 .

그러나 질문으로 돌아가려면 Javascript 란 무엇입니까? 이름은 ECMAScript의 일반적인 이름이며, 프로토 타입 언어 의 사양 으로 일반적으로 사용되는 것은 아니지만 독점적으로 도메인 객체 모델을 탐색하고 조작하는 데 사용됩니다.

ECMA-262는 C #의 표준 정의와 마찬가지로 ECMA-262는 표준 정의입니다. ECMAScript는 99 년 ECMA-262가 쓰여졌을 때 모든 이해 당사자가 동의 할 수있는 유일한 이름이었습니다.


7
답을 두 번 이상 공표 할 수 있다면 그렇게했을 것입니다 :-) 이것은 몇 가지 사항을 더 명확하게하는 데 도움이됩니다. C 컴파일러의 비유는 상황을 약간 이해하기 쉽게 만듭니다 :-) JavaScript가 바이너리로 컴파일되지 않고 최종 사용자는 비 / 쿼시 기능 스크립트를 보게됩니다. 따라서 표준으로 페이지를 작성할 수 없으며 모든 브라우저에서 동일한 기능을 수행하기를 희망합니다. (아직 작동 단어 임).
주님로.

1
@LordLoh. 맞아요. 그러나 jQuery 및 Prototype과 같은 라이브러리가 차이점을 추상화하도록 허용 할 수 있습니다.
pdr

이 게시물과 연구는 jQuery 애니메이션이 IE9에서 작동하지 않았을 때 시작되었으며 anybrowser.org 캠페인의 아이디어에 거짓말을하고 표준을 고수 할 수 있기를 바랍니다. HTML5 / CSS3 / JS. JS는 내 보닛의 버그로 끝났습니다.
주님로.

1
@LordLoh. 나는 그것이 jQuery의 잘못인지 확신 할 수 없다. 간단히 살펴보면 HTML에 문제가 발생하고 (예 : 따옴표 누락) 자바 스크립트를 최소화하면 정확도가 떨어지면 이상한 결과가 발생할 수 있습니다. 나는 세미콜론을 놓친 문제를 오랫동안 기억하고 있으며 주요 브라우저 중 하나에서 압축 후에 만 ​​실패했습니다. jQuery는 꽤 안정적이며 IE9와 잘 작동합니다.
pdr

5
@LordLoh. console.log가 문제입니다. 개발자 툴바를 열지 않으면 "콘솔"개체를 만들지 않으면 작동하지 않습니다.
pdr

23

Javascript는 일반적으로 사용되는 ECMAScript 구현입니다. Scheme 제품군 과 매우 유사한 상황 입니다 . Scheme에는 고도로 공식화 된 사양이 있습니다. 현재 버전은 R6RS이지만 R5RS는이 게시물에서 가장 일반적으로 구현되는 표준입니다. Scheme의 시대와 일반적인 철학으로 인해 ECMAScript보다 구현이 더 흩어져 있습니다.

Javascript는 현재 Mozilla Firefox 및 Google Chrome의 시장 점유율이 폭발적으로 증가함에 따라 일반적으로 발생합니다. Netscape Navigator는 원래 모질라 브라우저로 바뀌었다가 Firefox (및 Scheme 크라우드로 실행하는 경우 Iceweasel)로 바뀌 었습니다.

이제 여기 약간의 냄새가납니다. Javascript의 성능의 대부분은 파서와이를 실행하는 엔진에서 나옵니다. 여기에서 브라우저 간의 실제 차이점이 분명해집니다. Spidermonkey는 V8과 다르게 Javascript를 실행합니다. Javascript는 여전히 완전히 일반적인 라이브러리가 부족한 것과 같은 어려운 점을 가지고 있지만 아직 연구 중입니다.

따라서 Javascript가 C ++ 인 경우 ECMAScript는 C ++ 11이되고 UNIX 및 G ++는 "표준"에 가장 가까운 반면 .NET 및 Objective C ++ 용 C ++는 ECMAScript에서 Actionscript가 수행하는 방식과 훨씬 더 멀리 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.