Javascript

[JS] 자바스크립트란?

hazel__ 2022. 1. 4. 01:15

자바스크립트 란?

자바스크립트는 복잡한 것을 웹페이지에 적용할 수 있게하는 스크립트 또는 프로그래밍 언어다.

  • HTML은 제공할 웹 컨텐츠의 구조와 의미를 문단, 제목, 표, 삽입, 이미지, 동영상 등으로 정의하고 부여하는 마크업 언어이다.
  • CSS는 배경색, 폰트 등의 레이아웃을 지정하여 HTML 컨텐츠를 꾸미는 스타일 규칙 언어이다.
  • JavaScript는 동적으로 컨텐츠를 바꾸고, 멀티미디어를 다루고, 움직이는 이미지 등을 할 수 있는 스크립트 언어이다.

역사

초기의 웹은 변화하지 않는 정적인 글자로 꾸며진 HTML 페이지였다.

1995년, 넷스케이프 사는 HTML 페이지에 움직임을 주기위해 프로그램 언어를 추가했다.

Brendan Erich는 10일 만에 언어를 완성했고, ‘Mocha’라는 이름을 붙였다.

이후, ‘LiveScript’로 이름이 바뀌었고, 최종적으로 ‘JavaScript’가 되었다.

Java와 구문이 유사해서 이름을 ‘JavaScript’로 지었다고 한다. 이름은 유사하지만, 전혀 다른 언어이다.

자바스크립트를 사용하여 웹 문서의 내용을 동적으로 바꾸거나 이벤트를 적용하는 것이 가능해졌다.


자바스크립트는 컴파일 언어일까?

자바스크립트는 인터프리터 언어이다.

개발자 도구 콘솔에서 스크립트를 작성하여 실행하는데, 컴파일이 필요하지 않는다.

그러나, 자바스크립트도 컴파일 과정을 거친다.

자바스크립트 엔진 내부에서 실행 중 컴파일이 필요한 경우에 내부에서 컴파일한다.

 

자바스크립트 엔진은 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터이다.

대표적인 자바스크립트 엔진인 크롬 V8을 보자!

 

크롬 V8

V8은 구글의 오픈소스로 C++로 작성된 자바스크립트와 웹 어셈블리어 엔진이다.

크롬과 노드에 사용된다.

(노드는 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다!)

가장 먼저, 엔진이 실행할 JS 파일을 받는다.

파싱을 하고, AST(Abstract Syntax Tree)를 구축하는 과정을 거친다.

 

이후, 인터프리터가 코드를 읽으면서 실행한다.

이 과정에서 프로파일러가 최적화할 수 있는 코드를 컴파일러에게 전달한다. (JIT, Just-In-Time 컴파일러)

 


어휘구조

문자 집합

자바스크립트 프로그램은 Unicode 문자 집합을 사용해 작성된다.

  • Unicode
  • 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
  • 대소문자 구분 (HTML은 대소문자를 구분하지 않는다.)
  • 프로그램 코드 내의 토큰 사이에 있는 공백, 줄바꿈을 무시한다.
  • 유니코드 이스케이프 시퀀스이런 경우, 유니코드를 사용할 수 있도록 자바스크립트에서는 16비트 유니코드 글자를 표현할 수 있는 6자리 ASCII 문자열 시퀀스를 정의하고 있다.주석에서 유니코드 이스케이프 시퀀스를 사용하는 경우, 일반 아스키 글자로 취급되기 때문에 유니코드로 해석되지 않는다.
  • '\u'로 시작하고 16진수 숫자(0~f) 4개가 온다.(ex. \u00E9)
  • 일부 컴퓨터 하드웨어나 소프트웨어로는 특정 유니코드 글자들의 집합을 입력으로 받거나 화면에 표시할 수 없다.
  • 유니코드 정규화유니코드 표준안은 모든 글자에 대한 기본 인코딩을 정의하고 텍스트를 비교저 적절한 규범적 형태로 변환하는 정규화 절차를 명시하고 있다.
  • 유니코드는 한 문자를 인코딩하는 방법이 하나 이상일 수 있다.

리터럴(literal)

  • 프로그램에 직접 나타나는 데이터 값이다.

식별자와 예약어

  • 식별자(identifier) : 이름, 변수나 함수에 이름을 붙이거나 코드 내 반복문에서 쓸 레이블을 붙이는 데 사용된다. 식별자는 알파벳, 밑줄, 달러표시로 시작해야 한다. 자바스크립트에서는 식별자로 유니코드 문자 집합에 속한 문자와 숫자를 포함시킬 수 있다.
  • 예약어(reserved keyword) : 언어 내부적으로 사용할 용도로 예약된 식별자들을 말한다. 예약어는 식별자로 사용할 수 없다.

세미콜론

문장을 구분하기 위해서 사용한다.

  • 자바스크립트에서는 여러 문장이 서로 다른 줄에 나타나는 경우 세미콜론을 생략할 수 있다.
  • 자바스크립트는 다음 줄에 나오는 공백 아닌 첫 문자를 현재 문장과 이어서 해석할 수 없을 경우에만 줄바꿈을 세미콜론으로 취급한다.
  • 문장의 시작부분에 세미콜론을 넣어 새로운 문장을 방어할 수 있다.
  • return, break, continue 문 뒤의 개행은 ';'을 포함한다고 간주한다.
  • ++, - - 연산자가 포함된 경우, 전치 연산자를 우선으로 취급한다. (ex. 'x \n ++ \n y' → 'x; ++y;')

Reference

자바스크립트 완벽 가이드 - 프로그래밍 인사이트, 데이비드 플래니건 지음

JavaScript가 뭔가요? - Web 개발 학습하기 | MDN

 

JavaScript가 뭔가요? - Web 개발 학습하기 | MDN

MDN의 JavaScript 초급자 과정에 오신 걸 환영합니다! 이 글은 JavaScript를 넓게 보면서 "뭔가요?", "뭘 하나요?"와 같은 질문을 답변하고, 여러분이 JavaScript에 친숙해지도록 도와드립니다.

developer.mozilla.org

https://oowgnoj.dev/review/advanced-js-1

 

JavaScript, 인터프리터 언어일까?

기억하기 위해 기록합니다.

oowgnoj.dev

 

'Javascript' 카테고리의 다른 글

[JS] 자바스크립트의 데이터 타입  (0) 2022.06.26
[JS] 자바스크립트의 변수  (0) 2022.06.20
[JS] Date 객체  (0) 2022.05.19
[JS] 변수의 유효 범위  (0) 2022.01.30