728x90
🖥️ Udemy의 "JavaScript 완벽 가이드" 강의를 보고 정리한 내용입니다.
Javascript란 무엇인가?
- JavaScript는 런타임에 컴파일되는 동적 약형 프로그래밍 언어이다. 브라우저에서 웹페이지의 일부로 실행될 수도 있고, 모든 머신(호스트 환경)에서 직접 실행될 수도 있다.
- JavaScript는 웹페이지를 보다 동적으로 만들기 위해 만들어졌다.
- 최초에는 "LiveScript"라고 불렸으나 Java의 대중적 인기에 편승하기 위해 "JavaScript"로 이름을 바꾸었다.
JavaScript의 실행 과정
- html 파일이 호스팅 된 웹페이지가 있는 인터넷의 컴퓨터로 전송(request)
- 서버가 그 웹페이지를 로드한다.
- 응답(response)을 나의 브라우저로 전송한다.
JavaScript의 간단한 정의
- 동적 약형(Dynamic, weakly-typed) 프로그래밍 언어
- 해석형(Interpreted) 언어이므로 즉석(on the fly)에 컴파일된다.
- 호스팅(Hosted) 된 언어이므로 여러 환경에서 실행된다.(ex. 브라우저)
- 웹 페이지의 브라우저에서 코드를 실행하여 보다 동적으로 만든다.
해석형, 즉석(on the fly) 컴파일링이란?
- JavaScript 코드를 실행하려는 모든 환경에 JavaScript 엔진이 내장되어 있다.
- Chrome-V8, Firefox-SpiderMonkey 등
- 엔진의 역할은 JavaScript 코드를 분석해 읽고 이해한다. (Parse Code)
- 머신 코드(Machine Code)가 더 빨리 실행되기 때문에 머신 코드로 즉석 컴파일링을 한다.
- 즉, 코드를 읽고 반드시 실행하는 것이 아니라 머신에서 실행이 더 빠른 코드로 컴파일 한 다음에 머신 코드를 실행한다.
- 위의 과정은 JavaScript 엔진을 통해 브라우저 내에서 일어난다. 그리고 코드가 실행되면 웹 페이지에 그 효과가 나타난다.
- 또한 모든 JavaScript 코드 실행 작업은 항상 운영체제의 단일 스레드에서 진행된다.
오늘날의 엔진은 최적화가 많이 이루어졌기 때문에 엔진이 컴파일되지 않은 코드를 실행하기 시작한 후 더 빠른 실행을 위해 이미 실행 중인 코드를 컴파일할 수도 있다. 그다음 컴파일된 코드 동적으로 전환한다.
동적 약형 언어
동적 해석형(Dynamic, interpreted) 언어란?
- 미리 컴파일되지 않았음을 의미한다.
- 전송 중 컴파일링되기 때문에 코드가 런타임에 평가되고 실행된다.
- 코드가 런타임에서 변경될 수 있다. (예를 들어 데이터 유형을 동적으로 전환할 수 있다.)
- JavaScript은 "동적"으로 런타임에 분석 및 해석이 되어 컴파일되기 때문에 특정 작업의 수행이 가능해진다.
약형(Weakly Typed) 언어란?
- JavaScript에서 데이터로 작업할 때 데이터 유형을 가정해 자동으로 유추된다. 때문에 사전에 유형을 명확히 정의하지 않아도 된다.
- 데이터 유형이 코드 한 줄마다 변경될 수도 있다는 동적 특성과도 관련 있다.
호스트 환경에서의 실행
- JavaScript 엔진이 내장되어 있는 브라우저에서 JavaScript 코드를 실행할 수 있다.
- 새 페이지를 로드하지 않고도 웹 사이트의 내용을 변경할 수 있다.
- 로드된 HTML, CSS 코드와 잘 어우러져 작동할 수 있기 때문에 백그라운드 Http 요청을 보낼 수도 있다.
- 일반적으로 소위 샌드박스에서 실행된다고 볼 수 있으며, 로컬 파일 시스템에는 액세스 하거나 운영체제 등과 상호작용할 수 없다.
- 다른 환경에서도 JavaScript를 실행할 수 있다.
- 예를 들면, 서버 측(브라우저 안에서가 아닌 컴퓨터에서 실행)
- Google의 JavaScript 엔진 V8은 어디에서나 JavaScript를 실행할 수 있도록 추출되었다.("Node.js")
- Node.js는 어느 컴퓨터에서나 실행할 수 있고, 웹 백엔드와 웹 서버를 구축하는 데에도 자주 사용된다. (Server-side JavaScript)
- Node.js는 컴퓨터에서 바로 실행되기 때문에 로컬 파일 시스템으로의 접근과 파일 작성 등의 작업이 가능하다. 또한 운영체제 등과 상호작용 할 수 있다.
- 하지만 로드된 웹페이지에 직접 접근할 수 없기 때문에 HTML이나 CSS를 조작할 수는 없다.
Java vs JavaScript
Java | JavaScript |
브라우저에서 실행되지 않음 | 브라우저와 다른 모든 환경에서 실행 |
객체 지향적, 강형 언어 | 유연한, 약형 언어 |
Client-Side(Browser) vs Server-Side(NodeJS)
Client-Side(Browser) | Server-Side(NodeJS) |
JavaScript의 기원 | 브라우저 엔진을 추출하여 브라우저 외부에서 실행할 수 있도록 하는 것을 목적으로 만들어졌다. |
다양한 브라우저 공급 업체에서 JavaScript 실행 엔진을 제공한다.(ex. V8) | 어디에서든 Node.js와 JavaScript를 실행할 수 있다. |
브라우저에서 웹페이지와 상호작용 할 수 있다. | 파일 시스템으로 작업하거나 들어오는 HTTP 요청을 처리할 수 있다. |
728x90
'Learning > JavaScript' 카테고리의 다른 글
[JavaScript] 기초 - 함수 (0) | 2024.01.07 |
---|---|
[JavaScript] 기초 - 변수, 자료형, 연산 (1) | 2024.01.05 |
자바스크립트 기초 정리 5. 기타 (0) | 2023.12.12 |
자바스크립트 기초 정리 4. 조건문과 반복문 (0) | 2023.12.12 |