- 파싱 : 엔진이 스크립트를 읽음
- 컴파일 : 읽은 스크립트를 기계어로 전환
- 실행 : 기계어로 전환된 코드 실행
웹페이지 내 스크립트는 디스크에 저장된 임의의 파일 읽기, 쓰기, 복사, 실행에 제약
-> 운영체제가 지원하는 기능을 브라우저가 못 쓰게 하기 위함
모던 브라우저를 사용하면 파일은 다룰 수 있는데 접근은 제한되어 있음
-> 유저가 브라우저 창에 파일을 끌어다 두거나 인풋 태그를 통해 파일을 선택할 때 같은 특정한 상황에만 파일 접근을 허용
카메라, 마이크 같은 디바이스와 상호 작용하려면 사용자의 명시적 허가 필요
브라우저 내 탭과 창은 대개 서로의 정보를 알 수 없
-> js를 통해 한 창에서 다른 창을 열 때는 예외 ( 근데 도메인, 프로토콜, 포트가 다르면 페이지 접근 불가)
=> 동일 출처 정책(same origin policy) 이 정책을 피하려면 두 페이지는 데이터 교환에 동의해야 하고 동의와 관련된 특수 js코드들 포함하고 있어야 함
위와 같은 제약들은 사용자의 보안을 위해 만들어짐
자바스크립트를 이용하면 페이지를 생성한 서버와 정보를 쉽게 주고 받을 수 있
-> 타 사이트나 도메인에서 데이터를 받아오는 것은 불가능 가능할지라도 http 헤더 등을 이용하여 원격 서버에서 명확히 승인을 해줘야 함
=> 보안을 위해 사용
- coffee스크립트 : js를 위한 syntactic sugar , 짧은 문법을 도입하여 명료하고 이해하기 쉬운 코드를 작성
- 타입 스크립트 : 개발을 단순화 하고 복잡한 시스템을 지원하려는 목정으로 잘의 명시화에 집중
- flow : 자료형을 강자, 타입스크립트와는 다른 방식
- dart: 모바일 앱과 같이 브라우저가 아닌 환경에서 동작하는 고유의 엔진을 가진 독자적 언어