자바스크립트는 웹페이지에 생동감을 붙여 넣기 위해 만들어진 프로그래밍 언어입니다.
스크립트는 웹페이지의 HTML 안에 작성 할 수 있는데, 웹 페이지를 불러 올 때 스크립트가 자동으로 실행 됩니다.
어떤 사람들은 Java(자바) 와 혼동을 하는데 Javascript와 다른 언어 입니다.
자바스크립트
는 브라우저 뿐만 아니라 서버에서도 실행 할 수 있습니다.
이외에 자바스크립트 엔진
이라 불리는 특별한 프로그램이 들어 있는 모든 디바이스에서도 동작 합니다.
브라우저에는 자바스크립트 가상 머신
이라 불리는 엔진이 내장 되어 있습니다.
엔진의 종류
V8
- 크롬(Chrome)과 오페라(Opera) 에서 쓰입니다.SpiderMonkey
- 파이어폭스(Firefox) 에서 쓰입니다.엔진의 기본 동작 원리
1. 엔진(브라우져 내장엔진)이 스크립트를 읽습니다(파싱)
2. 읽어 들인 스크립트를 기계어로 전환합니다(컴파일).
3. 기계어로 전환된 코드가 실행됩니다. 기계어로 전환되었기 때문에 실행 속도가 빠릅니다.
엔진은 프로세스 각 단계마다 최적화를 진행합니다. 또한 컴파일이 끝나고 실행 중인 코드를 감시하고, 이 코드로 흘러가는 데이터를 분석하고 분석 결과를 토대로 기계어로 전환된 코드를 다시 최적화 하기도 합니다. 이런 과정으로 스크립트 실행 속도는 더욱 더 빨라집니다.
제약사항
웹페이지 내 스크립트는 디스크에 저장된 임의의 파일을 읽거나 쓰고, 복사하거나 실행할 때 제약을 받을수 있습니다. 운영체제가 지원하는 기능을 브라우저가 직접 쓰지 못하게 막혀있기 때문입니다.
모던 브라우저를 사용하면 파일을 다룰 순 있습니다. 하지만 접근은 제한되어 있습니다.
사용자가 브라우저 창에 파일을 '끌어다 두거나' <input>
태그를 통해 파일을 선택할 때와 같이 특정 상황에서만 파일 접근을 허용합니다.
카메라나 마이크 같은 디바이스와 상호 작용하려면 사용자의 명시적인 허가가 있어야 합니다. 자바스크립트가 활성화된 페이지라도 사용자 몰래 웹 카메라를 작동 시켜 수집한 정보를 국가안보국과 같은 곳에 몰래 전송할 수 없습니다.
브라우저 내에 탭과 창은 대게 서로의 정보를 알 수 없습니다. 하지만 자바스크립트를 사용해 한 창에서 다른 창을 열 때는 예외가 적용됩니다. 하지만 이 경우에도 도메인이나 프로토콜, 포트가 다르다면 페이지에 접근할 수 없습니다. 이런 제약사항을 동일 출처 정책(Same Origin Policy)
라 부릅니다. 이 정책을 피하려면 두 페이지는 데이터 교환에 동의해야 하고, 동의와 관련된 특수한 자바스크립트 코드를 포함하고 있어야 합니다.
http://site.com
에서 받아온 페이지가 http://gmail.com
에서 받아온 페이지 상의 정보에 접근해 중요한 개인정보를 훔치는걸 막기 위함입니다.
자바스크립트를 이용하면 페이지를 생성한 서버와 쉽게 정보를 주고 받을 수 있습니다. 하지만 타 사이트나 도메인에서 데이터를 받아오는건 불가능 합니다. 가능하다 할지라도 원격 서버에서 명확히 승인을 해줘야 합니다(HTTP 헤더 등을 이용), CORS 관련.