Udemy_js(1)

cindycho_0423·2023년 9월 14일
0

스크립트를 실행하는 환경이 브라우저인 경우라고 가정하고, JavaScript 코드를 실행하려는 모든 환경에 내장된 중요한 한 가지가 있는데 바로 JavaScript 엔진이다.

Chrome과 같은 브라우저 내에 내장되어 있는데 Chrome에서는 V8, Firefox에서는 SpiderMonkey라는 엔진을 사용한다. 물론 다른 브라우저들도 이러한 엔진을 재사용하거나 자체 엔진을 가지고 있다.

엔진의 역할은 코드를 구문 분석하는 것이다. 즉 JavaScript 코드를 분석해서 읽고 이해하는 것이다. 그리고 머신 코드가 더 빨리 실행되기 때문에 머신 코드로 즉석 컴파일링을 한다. 즉, 코드를 읽기는 하지만 이를 반드시 실행하는 것이 아니라 해당 코드를 머신에서 실행이 더욱 빠른 코드로 컴파일링한 뒤 머신 코드를 실행하는 것이다.

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

이 모든 작업은 단일 스레드에서 발생한다. 컴퓨터에는 실행이 되는 특정 작업들이 있다. 예를 들어, 우리가 연 브라우저는 단일 작업일 수도 있고 함께 실행되는 여러 개의 다른 작업으로 구성될 수도 있다.

JavaScript 코드 또한 결국 운영 체제가 처리해야 하는 하나의 작업이고 단일 스레드에서 실행된다.

JavaScript는 동적 해석형 언어이지만 약형 프로그래밍 언어이기도 하다. 동적 해석형 언어란 미리 컴파일 되지 않았음을 의미한다. 전송 중 컴파일링이기 때문에 코드가 런타임에 평가되고 실행된다. 이는 코드가 런타임에 변경될 수 있음을 의미한다. JavaScript에서는 데이터 유형을 동적으로 전환할 수 있다. '동적' 이라는 것은 런타임에 분석 및 해석이 되어 컴파일이 되기 때문에 특정 작업의 수행이 가능해진다는 것이다.

JavaScript에서 텍스트 데이터나 숫자와 같은 데이터로 작업을 할 때는 JavaScript에 텍스트 또는 숫자로 작업할 것이라고 알려줄 필요가 없다. 데이터 유형을 가정해서 자동으로 유추되기 때문이다. 변수가 어떤 데이터 유형인지 미리 알려줄 필요가 없다. 따라서 데이터 유형은 고정되어 있지 않으며, 바뀔 수 있다.

JavaScript는 호스트 환경에서 실행이 된다. 이는 JavaScript 엔진이 일부가 될 수 있거나 다른 환경에서 실행될 수 있다는 것이다. 가장 잘 알려진 환경은 브라우저이다. 현대 브라우저에는 JavaScript 엔진이 내장되어 있어서 코드를 실행할 수 있다.

그러나 다른 환경에서도 JavaScript를 실행할 수 있다. 서버 측, 브라우저를 통하지 않고 컴퓨터에서 코드를 실행할 수도 있다. JavaScript는 웹사이트를 보다 동적으로 만들고 새 페이지를 로드하지 않고도 웹사이트의 내용을 변경할 수 있도록 브라우저에서 실행되도록 개발이 되었다. JavaScript는 로드된 HTML, CSS와 함께 잘 어우러져서 작동할 수 있기 때문에 JavaScript를 사용해 백그라운드 Http 요청을 보낼 수도 있다. 즉 페이지를 다시 로드하지 않고, 뒤에서 요청을 보내고 데이터를 가져오는 등의 작업들을 할 수 있는 것이다. JavaScript가 브라우저 환경에서 실행될 때 할 수 없는 작업들도 존재한다.

구글이 개발한 JavaScript 엔진인 V8은 어디에서나 JavaScript를 실행할 수 있도록 추출이 되었다. 이를 Node.js 라고 부르게 되었다. Node.js는 어느 컴퓨터에서나 실행할 수 있고 웹 백엔드와 웹 서버를 구축하는 데에도 자주 사용된다.
Node.js 코드는 사용자가 직접 실행해야 하는 것이지 웹페이지에 들어가면 실행되는 식으로 작동하는 게 아니다. 대신 실행이 되고 있는 머신 내의 파일 시스템에만 접근이 가능하다. 그러나 로드된 웹 페이지에 직접 접근할 수 없기 때문에 브라우저 측 JavaScript를 이용할 때와 같이 HTML 이나 CSS를 조작할 수는 없다.

profile
https://linktr.ee/Hyunji_Cho 🐣

0개의 댓글