모던 자바 스크립트 튜토리얼을 3개월 이내에 (더 빠르게 정복하는 것을 목표로 한다.) 정복하려 한다.
본문에 써져 있는 내용을 그대로 가져오는 것이 아닌 내가 이해한, 혹은 이해하기 쉬운 방향으로 정리하려 한다.
그러면 나중에 다시 정독을 하더라도 빠른 시간 내에 쉽게 정독할 수 있을 것이라고 생각한다.
늘 그렇듯 문서의 도입부인 소개글, 어떤 개념의 유래와 같은 부분은 지루하지만 이 부분도 알아야 하는 부분이라고 생각한다.
자바스크립트란?
처음에는 LiveScript라는 이름으로 만들어졌다.
자바와는 아무 관련이 없으나 당시 인기가 많던 JAVA의 명성에 도움을 받고자 JavaScript로 이름을 변경하여 홍보.
자바스크립트 하면 ECMAScript 라는 말을 많이 보게 된다.
ECMAScript 202X 라며 뭔가 바뀐 내용을 JS 로 설명하는 강의, 문서들도 많이 보인다.
ECMAScript 는 국어로 치면 맞춤법 같은, script언어의 표준을 의미하고 JavaScript는 그런 ECMAScript를 따르는 스크립트언어이다.
JavaScript는 서버와 브라우저 환경에서 실행이 가능하다.
브라우저에는 '자바스크립트 가상 머신' 엔진이 내장되어 있는데 그 종류로는
V8 (Chrome, Opera 브라우저), SpiderMonkey (Firefox 브라우저), 그 외에 Trident, Chakra (IE브라우저), ChakraCore(Microsoft Edge), SquirrelFish(Safari) 등이 있다.
위의 가상 엔진이 동작하는 원리를 축약하여 설명하면
엔진이 스크립트를 읽고 (=파싱) -> 읽어 온 스크립트를 기계어로 변환(=컴파일) -> 기계어로 변환된 코드가 실행 되는 원리이다.
JavaScript는 서버에서 사용하는지, 브라우저에서 사용하는지, 실행 환경에 영향을 받는다.
서버에서 사용할 경우 파일을 읽고 쓰는 기능, 네트워크 요청을 수행하는 함수를 지원한다.
브라우저에서 사용할 경우 HTML 혹은 스타일 수정,
마우스클릭/엔터 입력 등 사용자가 입력한 동작을 수행,
AJAX 등을 이용하여 서버에 요청을 보내거나 파일 업/다운로드 수행,
쿠키/세션등을 설정, 로컬스토리지를 이용하여 클라이언트 측에 데이터 저장하기 등을 할 수 있다.
보안상 제한된 브라우저에서의 동작으로는
디스크에 저장 돼있는 파일을 웹페이지 상에서 읽기, 쓰기, 복사, 실행 할 경우.
운영체제가 지원하는 기능은 '브라우저가 직접' 쓰지 못하게 돼있다. input 혹은 드래그앤드롭을 이용해 파일에 접근할 경우에만 접근이 허용된다.
'동일 출처 정책(Same Origin Policy)' - 어떤 탭 내에서 JavaScript를 이용하여 다른 창을 띄울 경우, 띄우는 것 까지는 가능하지만 두 페이지 상의 도메인/프로토콜/포트가 다르면 페이지에 접근할 수 없다.
웹페이지를 생성한 서버와 정보를 주고받을 수 있으나 다른 사이트/도메인에서 해당 서버에 접근하여 정보를 가져오려 할 경우 요청이 거절된다. HTTP 헤더등을 별도로 설정하여 접근할 수 있는 방법도 있다.
위의 세가지 사항은 보안을 위해 제한되는 사항들이다.
JavaScript 외의 언어로 작성된 코드를 브라우저에서 실행 되기 전 JavaScript로 변환(transpile) 해주는 새로운 언어들이 등장했다.