[모던JS] 001. [소개] 자바스크립트란?
정의
자바스크립트란?
자바스크립트(JavaScript)란 웹페이지에 생동감을 불어 넣기 위해 만들어진 프로그래밍 언어이다.
자바스크립트는 최초 LiveScript라는 이름으로 불렸다. 그러나 당시에 Java라는 프로그래밍 언어가 인기가 좋았기에 이에 편승하기 위해 자바스크립트라고 이름을 바꾸었다.
스크립트란?
스크립트(script) : 자바스크립트로 작성한 프로그램을 스크립트라고 부른다.
스크립트는 HTML로 작성된 웹 페이지의 HTML 안에 작성할 수 있는데 웹 페이지를 불러올 때 스크립트가 자동으로 실행된다.
스크립트는 다른 언어처럼 별도의 컴파일이 필요 없다.
자바스크립트의 동작
자바스크립트는 웹 브라우저에서 실행할 수 있고, 서버에서도 실행할 수 있다. 그리고 자바스크립트 엔진(JavaScript Engine)이라 불리는 프로그램이 있는 모든 디바이스에서도 실행 가능하다.
대표적인 자바스크립트 엔진은 V8(크롬, 오페라 브라우저), SpiderMonkey(파이어폭스), IE(Trident, Chakra) 등이 있다.
위 엔진은 자바스크립트로 개발할 때 OO 기능은 V8 엔진에서만 작동한다라는 등의 문구를 볼 때 접하므로 알고 있으면 좋다.
자바스크립트 엔진의 동작 순서
- 파싱(Parsing)
- 코드를 토큰(Token)으로 분해하고 문법 구조를 해석한다.
- 엔진(또는 브라우저 내장 엔진)이 스크립트를 읽는다.
- 컴파일(COmpilation)
- 엔진이 파싱을 통해 읽어 들인 스크립트를 기계어로 전환한다.
- 실행 (Runtime)
- 기계어로 전환된 코드가 실행된다.
브라우저에서 할 수 있는 일과 할 수 없는 일
자바스크립트는 저수준 언어이다. 즉 안전한 언어이다. 고수준 언어처럼 기계 자체를 컨트롤 하지 않는다. 메모리나 CPU를 조작하지 않는다는 뜻이다.
애초체 자바스크립트는 웹 브라우저에서 동작을 위해 만든 언어이기 때문에 위의 과정이 필요 없다.
할 수 있는 일
- HTML 페이지에 새로운 HTML을 추가하거나 기존의 HTML을 수정하기, CSS 수정하기
- 마우스 클릭, 포인터 움직임, 키보드 키 눌림 등과 같은 사용자 행동에 반응하기
- 네트워크를 통해 원격 서버에 요청을 보내거나 파일 다운로드, 업로드 하기 (AJAX, COMET 등)
- 쿠키를 가져오거나 설정하기. 사용자에게 질문을 건네거나 메시지 보여주기.
- 클라이언트 측에 데이터 저장하기(로컬 스토리지)
할 수 없는 일
브라우저는 최소한의 보안을 위해 몇 가지 기능 제약을 걸었다. 주로 사용자의 개인정보 보호와 관련한 내용이다.
- 사용자의 디스크에 저장된 파일을 읽거나 쓰는 등의 행위를 할 수 없다.
- 다만 파일을 다루지 못하는 것은 아니다. 사용자가 직접 브라우저에 파일을 업로드 할 때는 파일을 다룰 순 있다. 하지만 그 파일에 접근할 순 없다.
- 카메라, 마이크를 사용할 때는 사용자의 권한 허가를 무조건 받아야 한다.
- 동일 출처 정책(Same Origin Policy) : 브라우저에서 여러 탭이나 창을 열었을 때 다른 탭의 내용에 접근할 수 없다. 다만 자바스크립트를 이용해서 한 창에서 다른 창을 열 때는 접근할 순 있지만 이 경우에도 도메인이나 프로토콜, 포트가 다르면 접근할 수 없다. 이 정책을 피해서 코딩하는 방법은 심화내용에서 다룬다.
- 다른 사이트의 도메인에서 데이터를 얻는 것은 불가능하다. 가능하다 할지라도 원격 서버에서 권한을 허가해주어야만 한다.
자바스크립트만의 강점
Python과 같은 언어도 Django등의 프레임 워크로 웹 페이지를 만들 수 있지만, 자바스크립트만으로 할 수 있는 장점들이 있다.
- HTML, CSS와 완전히 통합할 수 있음.
- 다른 언어에 비해 웹 페이지를 동작시킬 때 더 간결함.
- 모든 웹 브라우저에서 지원하고 표준 언어로 사용됨.
자바스크립트 너머의 언어들
자바스크립트가 모든 개발자의 니즈를 충족하지 못하여 자바스크립트에서 파생된 언어들이 있다.
이런 언어들로 작성하면 자바스크립트로 변환(transpile)해주기 때문에 동일하게 사용할 수 있다.
- CoffeeScript : 짧은 문법, 쉬운 코드. Ruby 개발자들이 주로 사용
- TypeScript : MS에서 개발한 언어. JavaScript와의 큰 차이점은 변수를 선언할 때 타입까지 같이 선언해야 한다는 점. 그래서 코드를 읽을 때 자료형이 무엇인지 JavaScript는 개발자가 직접 캐치해야 하지만 타입스크립트는 명확하다. 단 JavaScript는 자료형을 선언하지 않는 만큼 나중에 형 변환을 하며 유연하게 사용할 수 있는데 타입스크립트는 불가능하다.
- Flow : 페이스북 개발. 타입스크립트처럼 자료형 명시를 강제하나 방식은 타입스크립트와는 다르다.
- Dart : 구글 개발. 모바일 앱과 같이 브라우저가 아닌 환경에서도 동작할 수 있도록 고유의 엔진을 가진 언어.
'Programing > JavaScript' 카테고리의 다른 글
[모던JS] 003. [소개] 코드 에디터 (0) | 2024.03.25 |
---|---|
[모던JS] 002. [소개] 매뉴얼과 명세서 (0) | 2024.03.25 |
[코드팩토리] 클래스 기본기 (Class basics) (1) | 2024.03.05 |
[코드팩토리] try...catch (0) | 2024.03.05 |
[코드팩토리] 값 레퍼런스 복사 (Copy by value and reference) (1) | 2024.03.05 |
댓글