자바스크립트_기초_1.1

HwiJeongLee·2021년 8월 1일
0

자바스크립트

목록 보기
1/28

자바스크립트의 정의

웹페이지에 생동감을 주는 프로그래밍 언어입니다.

자바스크립트로 작성한 프로그램이 스크립트이고 웹페이지 안에서 작성할 수 있습니다. 이는 웹 페이지를 불러올 때 자동으로 실행됩니다.

스크립트는 별도의 컴파일 없이 보통의 문자 형태로 작성, 실행 할 수 있습니다.

자바스크립트는 브라우저, 서버 등 자바 스크립트 엔진이 있는 모든 디바이스에서 동작합니다.

자바스크립트 엔진이란?
자바스크립트 코드를 실행하는 프로그램 혹은 인터프리터이다.
(인터프리터란, 소스코드를 컴파일을 거치지 않고 바로바로 실행하는 환경을 의미한다.)
대체적으로 웹 브라우저에서 사용되며 전통적으로 인터프리터일 수도 있지만, 특정한 경우 바이트코드로 JIT 컴파일을 할 수 있다.

브라우저에는 '자바스크립트 가상 머신'이라 불리는 엔진이 내장되어 있습니다.

엔진의 동작 방식
1. 엔진이 스크립트를 읽는다.(파싱)
2. 스크립트를 기계어로 전환한다.(컴파일)
3. 기계어 코드가 실행된다. 기계어이므로 실행 속도가 빠르다.

엔진은 각 단계마다 최적화를 진행합니다. 코드의 전체적인 흐름과 데이터를 분석하며 기계어로 전환된 코드를 다시 최적화하면서 실행속도를 더 빠르게 합니다.

엔진의 종류
엔진은 여러 종류가 있고 각각 불리는 코드네임이 있습니다.

V8 - 크롬, opera에서 쓰임
SpiderMonkey - Firefox에서 쓰임
Trident - Internet Explorer(IE) 버전에 따라서 다르지만 IE에서 쓰임 // 현재 쓰이지 않음
Chakra - Internet Explorer(IE) 버전에 따라서 다르지만 IE에서 쓰임 // 현재 쓰이지 않음
ChakraCore - MicrosoftEdge에서 쓰임
SquirrelFish - Safari에서 쓰임

예) X의 기능은 V8에서만 지원합니다 == 크롬, opera에서만 기능 지원

브라우저에서 할 수 있는 일

자바스크립트는 메모리, CPU 영역의 조작을 허용하지 않고 접근이 필요하지 않은 브라우저를 대상으로 만든 언어이므로 안전한 언어입니다.

자바스크립트의 능력은 실행 환경에 의해 상당한 영향을 받습니다.
(예시)
node.js 환경에서는 임의의 파일을 읽고 쓰며 네트워크 요청을 수행하는 함수를 지원합니다.

브라우저 환경은 웹페이지 조작, 클라이언트와 서버의 상호작용에 관한 일을 할 수 있습니다.
-> 브라우저에서 JS로 할 수 있는 일
1. 새로운 html 추가 혹은 스타일 수정
2. 마우스 클릭, 포인터의 움직임 등으로 사용자 행동에 반응
3. 네트워크로 원격 서버에 요청 보내고 파일 다운로드 및 업로드(ajax, comet 기술 사용)
4. 쿠키 가져오기 혹은 설정, 사용자에게 질문 및 메세지 보여주기
5. 클라이언트에 데이터 저장하기

브라우저에서 할 수 없는 일

브라우저는 보안을 위해 (악성 웹페이지가 개인 정보에 접근하고 사용자의 데이터를 손상시키는 것을 막기 위해) JS의 기능에 제약을 두었습니다.

제약사항
1. 웹페이지 스크립트는 디스크에 저장된 임의의 파일을 읽기, 쓰기, 복사, 실행할 때 제약을 받을 수 있습니다. (운영체제가 지원하는 기능을 브라우저가 직접 쓰지 못하게 막혀있기 때문)
2. 브라우저 내 탭과 창은 서로의 정보를 알 수 없습니다.
딘, 자바스크립트를 사용해 한 창에서 다른 창을 열면 정보를 공유할 수 있지만 도메인, 프로토콜, 포트가 달라지면 페이지에 접근할 수 없습니다.
동일 출처 정책(Samw Origin Policy)라고 부릅니다.
3. 자바스크립트를 사용하면 페이지를 생성한 서버와 쉽게 정보를 주고 받는다.
하지만 다른 사이트나 도메인에서 데이터를 받아오는 것은 불가능합니다.

자바스크립트만의 강점

  1. HTML/CSS와 완전한 통합이 가능하다.
  2. 간단한 일은 간단하게 처리할 수 있다.
  3. 모든 주요 브라우저에서 지원하고, 기본언어로 사용가능하다.

자바스크립트와 그와 비슷한 언어들

프로젝트마다 요구사항이 다양해 자바스크립트가 모든 사용자의 요구를 충족시킬 수는 없습니다.
그래서 근래 브라우저에서 실행 되기 전에 자바스크립트로 변환할 수 있는 언어들이 많이 생겼습니다.
이들은 이들만의 언어로 작성된 코드를 보이지 않는 곳에서 자바스크립트로 자동 변환해줍니다.

CoffeeScript - 짧은 문법을 도입하여 명료하고 쉬운 코드로 작성할 수 있습니다.
TypeScript - 개발을 단순화 하고 복잡한 시스템을 지원하는 목적으로 자료형의 명시화에 집중한 언어입니다.
Flow - 이 또한 자료형을 강제하는데 사용하지만 typeScript와는 다른 방식으로 사용됩니다.
Dart - 앱과 같이 브라이저가 아닌 환경에서 동작하는 고유의 엔진을 가진 독자적인 언어입니다.

profile
초보 개발자의 개발 공간

0개의 댓글