서랍장

[JavaScript] JavaScript 소개 본문

책장/Javascript

[JavaScript] JavaScript 소개

TERAJOO 2020. 9. 23. 23:01

 

 

JavaScript 란 무엇일까?

 

결론부터 말하자면 JavaScript 란 scripting language 이고 interpreted language 이다.

말이 좀 어려운데 간단하게 설명하자면 scripting 의 의미는 control 할 수 있도록 도와주는 의미이고, interpreted 의 의미는 컴파일 하지 않는 이미 해석되어있는 언어라는 의미이다.

후자의 의미가 좀 어려운데 다시 설명해보자. c언어와 같은 compile 기반의 프로그래밍 언어는 실행 되기 전에 컴파일러에 의해 compile 된 이후 실행된다. 허나 이와는 달리 JavaScript 는 run time 떄 그냥 바로 실행되버린다는 특징이 있다.

즉, script 로 되어있는 프로그램들을 실행할 때 인터프리터의 도움을 받아 다이나믹하게 on-demand 로 그 자리에서 해석 하여 머신코드로 변환시키는 작업을 얻게 되는 것이다. 즉 이러한 특징으로 interpreted language 라고 한것이다.


 

JavaScript 는 1995년에 Netscape Communication 에서 Mocha라는 이름으로 개발되었다.

 

이후 사람들에게 쉽게 인식되기 위해서 마케팅 적으로 그 당시 유명했던 Java의 이름을 빌려 JavaScript 라고 불렸다.

이 때문에 현재 Trademark License 가 아직도 Oracle 에 있기도 한다. ㅎㅎ

 

여튼 이렇게 개발된 Java와 C랑 문법이 비슷하다는 특징이 있는 JavaScript 는 처음 나왔을 때는 그저그런 언어였다. 허나 (당시 욕심쟁이)MS 에서 JScript 를 개발했고 Netscape 이 없어진 후 당시 엄청난 기술이었던 AJAX 기술이 생기게 되었고 그 후 JavaScript BOOOOOOM! 이 발생하게 되었다.

 

이 BOOM 을 기점으로 HTML5 에 대한 표준이 생기고 ECMAScript 라는 JavaScript 의 표준이 생기는 등 큰 변화가 생겼고, 현재 엄청난 인기의 JavaScript (ECMAScript) 가 생기게 되었다!

💡 ECMAScript

ECMAScript 는 Ecma International 에 의해 관리되는 JavaScript 의 표준안이다. 5버전 까지는 클래스 코딩이 어렵고 함수 객체? 독자적인 코딩 문법으로 그렇게 큰 인기를 끌진 못했지만 6버전 이후 Class, let, const, Promise (await, async), block scoping 등 여러 절출 개념들이 생겨나 큰 인기를 끌게 되었다.


 

초기의 Web Browser 들은 Tag의 structuring 과 같은 HTML parsing에 큰 초점을 두었다. 허나 점차 시간이 지나면서 HTML 위에서 동작하는 script 언어가 필요했고, 해당 역할을 JavaScript 가 맡게 되었다. 물론 현재 Google 의 Dart 가 있지만 대부분 Javascript 를 사용하고 있다. ( 마치 IPv6가 생겼지만 계속 쓰고있는 IPv4 를 쓰는 느낌? )

💡 Interpreter

여튼 이런 script 언어가 생김에 따라 각 브라우저들은 해당 언어를 실행시키기 위해 위에서 말한

"Interpreter"

를 내장하게 되었다. Mozilla Firefox 는 SpiderMonkey라는 엔진을 가지고 있고, Chrome 과 Opera 는 V8이라는 엔진을 사용하고 잇다.

 

Javascript 를 사용하면 HTML 문서에 대해 style을 자유자재로 바꿀 수 있고, event 를 처리할 수도 있으며 AJAX 을 사용할 수도 있다.

 

 

'책장 > Javascript' 카테고리의 다른 글

Axios가 대괄호 인코딩을 해줄까? (feat. paramsSerializer)  (0) 2024.01.01
BOM / DOM ???  (0) 2021.04.28
[JavaScript] Three.js 를 써보며  (0) 2020.09.02
[JavaScript] new  (0) 2020.08.28