ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] JavaScript란 무엇일까?
    Web/JavaScript 2023. 5. 24. 19:36

     

    • JavaScript란 무엇일까?
    • 해석형, 즉석(on the fly) 컴파일링이란 무엇인가?
    • 동적 해석형 언어란 무엇일까?
    • 약형(weakly types)은 무슨 뜻일까?
    • 호스팅된 환경에서의 JavaScript 실행

     


    - JavaScript란 무엇일까?

     

    JavaScript는 동적 약형 프로그래밍 언어이다.

     

    JavaScript는 해석형 언어이므로 전송 중에 컴파일이 되며, 몇몇 프로그래밍 언어처럼 개발 중에 컴파일 되는 것이 아니라 실행되기 전에 컴파일이 된다는 특징이 있다.

     

    또한 호스팅 된 언어이므로 여러 환경에서 실행이 가능하다.

     

    가장 두드러진 사용 사례로는, 웹페이지의 브라우저에서 코드를 실행하여 보다 동적으로 만드는 것이다.

     

     


    - 해석형, 즉석(on the fly) 컴파일링이란 무엇인가?

    JavaScript 코드를 실행하려는 모든 환경에는 JavaScript 엔진이 내장되어 있다.

    Chrome에는 V8이라는 이름의 엔진이, Firefox에는 SpiderMonkey라는 이름의 엔진이 존재한다.

     

    엔진의 역할코드를 구문 분석(Parse Code)하는 것이다.

    이 엔진은 JavaScript 코드를 실행하여 웹페이지의 동적인 기능을 제공하는 인터프리터이다.

     

    그리고 머신 코드가 더 빨리 실행되기 때문에 머신 코드로 즉석 컴파일링을 하게 된다.

     

    즉, 코드를 읽기는 하지만 이를 반드시 실행하는 것이 아니라 해당 코드를 머신에서 실행이 더욱 빠른 코드로 컴파일링하고 머신 코드를 실행한다.

     

    이 모든 과정이 JavaScript 엔진을 통해 브라우저 내에서 일어나고 코드가 실행되면 웹페이지에 효과가 나타나게 된다.

     

    브라우저에는 코드를 가져와서 컴파일하고 최적화하고 실행하는 내장 도구가 존재한다.

    이 모든 작업은 단일 스레드에서 발생한다는 특징이 있다.

    => JavaScript 코드 실행은 하나의 단일 스레드에서 실행이 된다.

     

    물론 최근에는 다중 스레드를 제공하지만, 이 내용은 이후에 다루도록 하겠다.

     

     


    - 동적 해석형 언어란 무엇일까?

     

    간단하게 한마디로 하자면,

    동적 해석형 언어미리 컴파일되지 않았음을 의미한다.

     

    1. JavaScript는 전송 중 컴파일링이기 때문에 코드가 런타임에 평가되고 실행된다.

    이는, 코드가 런타임에서 변경될 수 있음을 의미한다.

     

    2. JavaScript에서는 데이터 타입을 동적으로 전환할 수 있다.

    다른 언어처럼 데이터 타입을 지정하지 않아도 상관 없다는 의미이다.

     

    3. JavaScript에서 '동적'이라는 것은 런타임에 분석 및 해석이 되어 컴파일이 되기 때문에 특정 작업의 수행이 가능해진다.

     

     


    - 약형(weakly types)은 무슨 뜻일까?

     

    다른 프로그래밍 언어에서는 데이터 타입을 정의해야 하고, 다른 것을 저장하면 오류를 발생시킨다.

     

    하지만 JavaScript에서는 변수, 즉 데이터 컨테이너의 데이터 타입을 알려 줄 필요가 없다.

     

    만약 변수에 데이터가 저장되어 있고 그게 숫자이면, 그대로 받아들인다.

    이는 동적 언어이기 때문에 관대하고 사전에 유형을 명확히 정의하지 않아도 된다.

     

    따라서 데이터 타입은 고정되어 있지 않으며 바뀔 수 있다.

     

     


    - 호스팅된 환경에서의 JavaScript 실행

     

    현대 브라우저엔 JavaScript 엔진이 내장되어 있어 코드를 실행할 수 있다.

     

    그러나 다른 환경에서도 JavaScript를 실행할 수 있는데,

    예를 들어 서버 측 브라우저를 통하지 않고 컴퓨터에서 코드를 실행할 수 있다.

     

    아래는 Client-side와 Server-side를 비교한 내용이다.

     

     


     

     

    1. Client-side (Browser)

    • JavaScript는 웹사이트를 보다 동적으로 만들고 새 페이지를 로드하지 않고도 웹사이트의 내용을 변경할 수 있도록 브라우저에서 실행이 되도록 개발되었다.
    • JavaScript는 HTML, CSS와 잘 어우러져서 작동하기 때문에 JavaScript를 통해 백그라운드 HTTP 요청을 보낼 수도 있다.
    • 가령 보안상의 이유로 로컬 파일 시스템에 액세스할 수 없다. 그렇지 않으면 방문하는 모든 웹페이지가 사용자의 파일 시스템을 읽을 수 있고, 컴퓨터의 파일을 삭제할 수도 있는 일이 일어날 수도 있다.

     

     

    2. Server-side (Node.js)

    • Google이 개발한 JavaScript 엔진 V8은 어디에서나 Javascript를 실행할 수 있도록 되어있다. 이 도구가 바로 Node.js이다.
    • Node.js는 어느 컴퓨터에서나 실행할 수 있고, 웹 백엔드와 웹 서버를 구축하는 데에 자주 사용된다.
    • Node.js는 로컬 파일 시스템으로의 접근과 파일 작성 등의 작업이 가능하다. 또한 운영체제와 상호작용이 가능하다. 하지만 로드된 웹 페이지에 직접 접근할 수 없기 때문에 Client-side처럼 HTML, CSS를 조작할 수 없다.

     

     


    참고 강의 및 이미지 출처: https://www.udemy.com/course/javascript-zw/

     

    이미지 출처: https://i.namu.wiki/i/04eK0C8HJWl88hGG2V0DcPH9-0C-86yDowUWuHuc7XXY5jZ5Zov_afOOdZs9LtL5EL0poQsjvsoz2oUSNt0giRF75pRnfwycB2A5Qvk4cILUwjp089tvw6wWAT0pmDT495utvqLvVU2n2QPHRl0Dnw.svg
Designed by Tistory.