JAVASCRIPT.INFO #1

YoungToMaturity·2021년 4월 16일
0

JAVASCRIPT.INFO

목록 보기
1/1
post-thumbnail

Javascript란?

정의

Javascript는 웹페이지에 생동감을 불어넣기 위해 만들어진 PL이다.
JS로 만들어진 프로그램을 script라고 하며, 웹페이지의 HTML 안에 이를 적용할 수 있다.
Javascript는 브라우저 뿐만 아니라 서버에서도 실행할 수 있다.
Javascript 엔진이 들어있는 모든 디바이스에서 동작한다. 브라우저에는 엔진이 내장되어있다.

  • V8 - Chrome과 Opera에서 쓰임
  • Spider Monkey - FireFox에서 쓰임
  • SquirrelFish - Safari에서 쓰임
    그렇다면 네이버의 브라우저 whale은? -> V8을 개조한 엔진을 사용한다고 한다!

Javascript 엔진이란?
초기에는 단순한 Interpreter였으나, 현대에는 JIT-Compile을 사용한다. 브라우저에서 Javascript 엔진은 Document Object Model을 통해 rendering 한다. 하지만, Javascript 엔진은 브라우저에만 있는 것이 아니다. 예를 들어, 구글의 V8 엔진은 Node.jsDeno의 핵심 구성요소이다. Javascript의 표준화된 사양은 ECMAScript이기 때문에, ECMAScript 엔진은 Javascript 엔진의 또 다른 이름이기도 하다.


엔진 동작 방식(간단히)
1. 엔진이 스크립트를 읽는다. (parsing)
2. 읽어온 스크립트를 기계어로 전환한다. (Compile)
3. 전환된 기계어를 실행한다.
-> 특징 : 각 단계마다 최적화를 진행하며, 심지어 실행중인 코드도 감시, 데이터를 분석하여 더 나은 최적화 방식이 있다면 적용시킨다!

브라우저에서 할 수 있는 일

Modern Javascript는 메모리나 CPU 같은 저수준 영역의 조작을 허용하지 않는다. 초기의 Javascript는 브라우저를 대상으로 탄생했기 때문이다. 하지만, Node.js에서는 임의의 파일을 읽거나 쓰고, 네트워크 요청을 할 수 있다.
=> 즉, Javascript의 능력은 실행 환경에 상당한 영향을 받는다!
이를 통해 알아본 Javascript가 브라우저에서 할 수 있는 일은

  • 새로운 HTML을 추가하거나 style을 수정.
  • 마우스 클릭이나 포인터의 움직임, 키보트 키 눌림과 같은 사용자 행동에 반응.
  • 네트워크를 통해 원격 서버에 요청을 보내거나, 파일 다운&업로드 (AJAX,COMET)
  • 쿠키를 가져오거나 설정, 사용자에게 질문을 건내거나 메세지 보여주기
  • 클라이언트 측에 데이터 저장하기 (로컬 스토리지)
    -> nomad coders에서 사용해본 방식! 사용자의 이름과 할 일을 저장!

브라우저에서 할 수 없는 일

마찬가지로 브라우저를 위해 만들어졌기 때문에, 브라우저에서의 Javascript는 개인정보에 접근하거나 데이터를 손상시키는 악성 웹페이지의 발생을 막기 위해 제약을 걸어두었다.

  • 웹페이지 내 script는 디스크에 저장된 임의의 파일을 읽거나 쓰고, 복사, 실행할 때 제약을 받을 수 있다.
    => 정확히는 다룰 수는 있으나, 접근은 제한되어 있다. <input> 태그를 통해 파일을 선택할 때와 같은 특정 상황에 파일을 다룰 수 있다.
  • 브라우저 내 탭과 창은 대개 서로의 정보를 알 수 없다.
    하지만, Javascript를 이용해 한 창에서 다른 창을 열때는 예외적으로 알 수 있다.
    하지만! 도메인, 프로토콜, 포트가 다르다면 이 경우에도 서로의 정보를 알 수 없다.
    => 이를 동일 출처 정책 (Same Origin Policy)이라고 한다.
  • Javascript를 이용하면 페이지를 생성한 서버와 쉽게 정보를 주고 받을 수 있다.
    역시나, 타 사이트 혹은 도메인에서 데이터를 받아오는 것은 불가능함. 가능하다 할지라도 원격 서버에서 명확히 승인을 해주어야 함(HTTP 헤더등을 이용)

Javascript의 장점 TOP 3

  • HTML / css 와 완전히 통합 가능
  • 간단한 일은 간단하게 처리할 수 있게 함
  • 모든 주요 브라우저에서 지원, 기본 언어로 사용됨

Javascript '너머의' 언어들

Javascript 문법은 모든 사람의 요구를 충족시키지 않는다. 따라서, 브라우저에서 실행되기 전에 Javascript로 Transpile 할 수 있는 새로운 언어들이 등장했다.

  • CoffeeScript는 Javascript를 위한 'Syntatic Sugar'이다. 짧은 문법을 도입하여, 명료하고 이해하기 쉬운 코드를 작성할 수 있다.
  • TypeScript는 개발을 단순화하고 복잡한 시스템을 지원하려는 목적으로 자료형의 명시화에 집중해 만든 언어이다. Microsoft에서 만들었다.
  • Dart는 모바일 앱과 같은 브라우저가 아닌 환경에서 작동하도록 만들어진 언어이다. 고유 엔진을 갖고있으며, Google에서 만들었다.

이 외에도 다양한 언어가 존재하지만, 가장 중요한 것은 이러한 언어들을 사용하더라도 내가 뭘 하는지 정확하게 알기 위해서는 결국 Javascript를 이해해야한다는 점이다.

profile
iOS Developer

0개의 댓글