JavaScript/Basics

[JavaScript] 자바스크립트란?

Sonny Cucumber 2022. 3. 8. 17:02

이는 웹에 생동감을 불어넣어주기 위해서 만들어진 언어

 

JS로 작성한 프로그램을 스크립트라고 부르는데,

이는 웹페이지의 HTML 안에 작성하 수 있는데 스크립트가 자동으로 실행됨.

 

이름이 왜 자바스크립트냐?

-> 원래는 라이브스크립트였음. 근데

인기많았던 자바의 등에 업히려고 이렇게 지었다고 한다ㅋㅋㅋ

거기다 ECMAScript라는 고유한 독립적인 언어가 되었는데

 

ECMAScript = 자바스크립트의 토대를 구성하는 스크립트 언어

ECMA International표준화 기구에 의해서 표준화됨.

 

브라우저를 위해서 만들어졌지만 서버를 위해서도 동작함
(아마 Node.js 등)

 

이 외에도 JS엔진이 들어있으면 동작이 가능

브라우저에선 JVM (Javascript virtual machine)이라는 내장 엔진이 있는데

크롬과 Opera에서는 V8 / 파이어 폭스에서는 spiderMonkey

IE는 Trident나 Chakra 등의 엔진을 사용함 IE는 손절하자 이제

엔진이 동작하는 방식을 간단하게 말하자면

내장엔진이 스크립트를 읽어서 (파싱)

이를 기계어로 변환 (컴파일!)

이를 실행하는데 기계어로 전환되었기 때문에 실행속도가 빠르다고 한다

 

 

브라우저에서 할 수 있는 일.

새로운 HTML을 추가하거나 기존의 HTML이나 스타일을 수정하기

클릭이나 포인트의 움직임, 키 눌림과 같은 유저 행동에 반응

네트워크 통해 서버에 요청 보내거나, 파일 다운로드, 업로드하기(AJAX)

클라 측에 데이터 저장하기 (로컬 스토리지)

브라우저에서 할 수 없는 일

보안을 위해 기능에 제약을 걸어놨는데,

* 디스크에 저장된 파일을 못쓰게 되어있고 모던 브라우저를 사용하면

파일을 다룰 수는 있지만 접근은 제한. 사용자가 브라우저 창에 파일을 드래그해오거나 <input> 태그를 통해파일을 선택할 떄와 같이 특정 상황에서만 파일 접근을 허용카메라나 마이크를 쓰려면 허가가 필요. 

 

*브라우저 내의 탭과 창은 대개 서로의 정보를 알 수 없음근데 JS를 사용해 한창에서 다른 창을 열 때는 예외. 하지만 이 때도 도메인이나 프로토콜, 포트가 다르면 접근 안됨이런걸 SOP (Same Origin Policy)라고 부름이걸 피하려면 페이지간의 데이터 교환에 동의해야하고동의와 관련된 코드가 있어야함. 예시로 http://anysite.com -> http://gmail.com에서 받아온페이지 상의 정보에 접근해 중요한 개인정보를 훔치는걸 막기 위함

 

* JS를 이용하면 페이지를 생성한 서버와 쉽게 정보를 주고받을 수 있음하지만 타 사이트나 도메인에서는 안됨.

되더라도! 원격 서버에서 명확히 승인을 해줘야 한다. (HTTP 헤더 등을 이용)

 

서버라면 이런 제약이 없을건데 모던 브라우저에선 추가 권한 허가를 요청하는

플러그인이나 익스텐션 설치가 허용된다

 

JS만의 강점

HTML/CSS와 완전히 통합

간단한 일은 간단하게 처리

모든 주요 브라우저에서 지원하고, 기본 언어로 사용.

 

이 외

당연히 모든 요구를 충족시켜주지 못함

그래서 요즘에는 다른 언어가 JS로 트랜스파일 (변환)

시켜주는데 제일 눈에 띄는건 당연 TypeScript이다

-> 자료형의 명시화(strict data typing)에 집중해 만든 언어

마소가 만들었다고 한다