자바스크립트는
웹페이지에 생동감을 불어넣기 위해
만들어진 언어
자바스크립트로 작성된 문서는 script라고 불리고, 웹페이지를 불러올 때 그 웹페이지의 HTML문서를 랜더링 엔진이 읽다가 <script>
태그를 만나면 JS엔진이 해당 자바스크립트 문서를 다운로드 받고, HTML문서가 다 받아지고 난 후에 script
가 자동으로 실행됩니다.
자바스크립트는 브라우저를 위해 만들어진 언어
인것을 기억합시다. 브라우저를 위한 언이이기때문에 하드디스크나 메모리로의 접근은 할 필요가 없고 사실 이 기능은 운영체제가 담당하고 있기 때문에 제한되어있습니다.
때문에 운영체제가 담당하는 노트북의 웹캠
이나 마이크
와 같은 디바이스
와의 상호작용을 하기 위해서는 사용자의 명시적인 허가가 필요합니다.
그럼 어떤것들이 가능하고, 어떤것들이 불가능한지 알아봅시다.
Q.
브라우저를 사용하는 이유는 뭘까?
A.
멀리 떨어진 사용자와의 통신(정보를 주고받음)
을 하기 위해서 사용하지 않습니까? 우리(클라이언트)
는 브라우저를 통해 다른 컴퓨터(서버)
로의 요청을 보낼 수 있고, 요청에 대한 응답을 받아올 수 있습니다.
Q.
생동감을 주는 일이 뭔데?
A.
사용자 행동에반응
하기. 반응을 하려면 정적으로 작성된 HTML문서를 고칠 수 있어야 합니다. 브라우저는 HTML문서를동적으로 수정
할 수 있습니다.
더 나아가 하드디스크의 메모리를 직접 사용하기 보단 서버에서 온 응답을 저장할 수 있는
쿠키스토리지
, 쿠키스토리지보다 더 많은 용량의로컬스토리지
등의 메모리 기능을 제공합니다.
Q.
내 컴퓨터 카메라나 마이크로 도청하는거 아냐??
A.
위에서 말했듯이 디바이스로의 접근을 하기 위해서는 사용자의명시적인 허가
가 필요합니다.
브라우저의 여러 탭들은 서로의 정보를 알지 못합니다.
브라우저의 여러 탭들은 서로 독립적이라고 합니다. 때문에 서로의 정보를 알 수 없다고 합니다 JS를 사용해
한 창에서 다른 창을 열 때는 예외가 적용된다고 합니다. 하지만 이 경우에도 동일 출처 원칙
이 적용되어 다른 도메인이나, 프로토콜, 포트번호로의 접근은 불가능하다고 합니다.
동일 출처 원칙
으로 서로 다른 페이지는 데이터 교환이 불가능합니다.
이러한 제약사항은 사용자의 보안을 위해
만들어졌습니다. 악의적인 사이트에서 다른 사이트에서 받아온 페이지 상의 정보에 접근해 중요한 개인정보를 훔치는 걸 막기 위함입니다.
하지만 신뢰하는 사이트끼리, 두 페이지는 서로 데이터 교환에 동의를 하고, 동의와 관련된 특수한 자바스크립트 코드를 포함하고 있으면 가능하다고 합니다.
기본 언어로 사용됨
브라우저와 관련된 개발자가 되기 위해선 자바스크립트를 반드시 알아야하는 이유가 아닐까 싶습니다. 심지어 Chrome브라우저에서 사용되는 V8엔진
을 바탕으로 브라우저가 아닌 환경에서도 자바스크립트를 실행시킬 수 있는 Node.js
의 등장으로 이제는 서버나 모바일 앱 등을 만드는 것도 가능합니다.
자바스크립트는 브라우저에서만 쓸 목적으로 고안된 언어이지만, 지금은 다양한 환경에서 쓰이고 있는 아주 매력적인 언어
이다.