JS 파트 1) 1.1 : 자바스크립트란?

나나·2021년 8월 4일
0

모던 자바스크립트

목록 보기
1/25
post-thumbnail

정의

웹페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어. 메모리나 CPU같은 저수준 영역의 조작을 허용하지 않는 안전한 프로그래밍 언어.

📌 스크립트(Script) : 자바스크립트로 작성한 프로그램. 웹페이지의 HTML 안에 작성할 수 있으며, 웹페이지를 불러올 때 스크립트가 자동으로 실행된다. 컴파일 없이 보통의 문자 형태로 작성할 수 있고, 실행도 할 수 있다.

왜 "자바" 스크립트일까?🤷🏻‍♂️

자바스크립트의 처음 이름은 LiveScript였다. 하지만 그때 당시 자바의 인기가 하늘을 찌르고 있던 때라, LiveScript의 홍보를 위해 자바의 동생 격인 언어처럼 보이려고 "Java"Script로 이름을 바꾸었다.

결론은? 자바와 자바스크립트는 아무런 연관이 없다!

자바스크립트는 브라우저뿐만 아니라 서버에서도 실행가능하다.
또한 자바스크립트 엔진(JavaScript Engine)이 들어있는 모든 디바이스에서도 동작한다.

자바스크립트 가상 머신 (브라우저 내장 엔진)

📌 엔진의 종류별 코드네임

  • IE : 버전에 따라 Trident 또는 Chakra 사용

📌 엔진의 동작 기본원리

  1. 파싱 : 엔진이 스크립트를 읽는다.
  2. 컴파일 : 읽어들인 스크립트를 기계어로 전환
  3. 기계어로 전환된 코드 실행 (기계어로 전환되서 속도 빠름)

브라우저에서 할 수 있는 일

  • 페이지에 새로운 HTML을 추가하거나 기존 HTML, 또는 스타일 수정
  • 마우스 클릭이나 포인터의 움직임, 키보드 키 눌림 등과 같은 사용자 행동에 반응
  • 네트워크를 통해 원격 서버에 요청을 보내거나, 파일 다운로드/업로드 하기 (AJAX/COMET과 같은 기술 사용)
  • 쿠키를 가져오거나 설정, 사용자에게 질문을 건네거나 메시지 보여주기
  • 클라이언트 측에 데이터 저장(로컬 스토리지)

브라우저에서 할 수 없는 일

  • 디스크에 저장된 임의의 파일을 읽거나 쓰고, 복사하거나 실행할 때 제약을 받을 수 있다.
    - 왜❓ 운영체제가 지원하는 기능을 브라우저가 직접 쓰지 못하게 막혀있기 때문!
    • 파일을 다룰 순 있으나 접근에는 제한이 있다!
      • 그럼 가능한 접근은❓ 사용자가 브라우저 창에 파일을 ‘끌어다 두거나’ input 태그를 통해 파일을 선택할 때와 같은 특정 상황
    • 디바이스와 상호작용하려면 사용자의 명시적인 허가 필요
  • 브라우저 내 탭과 창은 대개 서로의 정보를 알 수 없다.
    - 예외❗ 자바스크립트를 사용해 한 창에서 다른 창을 열 때. (하지만 이 경우도 도메인이나 프로토콜, 포트가 다르다면 접근 불가능)
    - = 동일 출처 정책(Same Origin Policy)
  • 타 사이트나 도메인에서 데이터를 받아오는 것은 불가능하다. 가능하다 할지라도 원격 서버에서 명확히 승인을 해줘야 한다(HTTP 헤더 등을 이용)

자바스크립트의 강점 3가지

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

자바스크립트 '너머의' 언어들

자바스크립트 문법은 모든 사람들의 요구를 만족시키진 못한다.

그래서

브라우저에서 실행되기 전에 자바스크립트로 트랜스파일(Transfile, 변환)할 수 있는 새로운 언어들이 많이 등장했다.

  • CoffeeScript : 짧은 문법을 도입하여 명료하고 이해하기 쉬운 코드를 작성할 수 있다. Ruby 개발자들이 선호한다.
  • TypeScript : 개발을 단순화하고 복잡한 시스템을 지원하려는 목적으로 "자료형의 명시화(strict data typing)'에 초점을 두어 만든 언어다. Microsoft가 개발하였다.
  • Flow : TypeScript와 같이 자료형을 강제하는데, TypeScript와는 다른 방식을 사용한다. Facebook이 개발하였다.
  • Dart : 모바일 앱과 같이 브라우저가 아닌 환경에서 동작한느 고유의 엔진을 가진 독자적 언어다. Google이 개발하였다.

이 외에도 JS로 트랜스파일할 수 있는 언어는 다양하다.

❗ 이런 언어들 중 하나를 선택한다 하더라도 그 하나를 이해하려면 결국엔 JS를 알아야한다.

이 글은 https://ko.javascript.info/를 참고하여 작성하였습니다.

profile
코린이의 둥당둥당 개발일지

0개의 댓글

관련 채용 정보