**기본 개념**
자바스크립트(JavaScript)는 웹 브라우저에서 동작하는 스크립트 언어 중 하나입니다.
HTML, CSS와 함께 웹 프로그래밍을 할 수 있도록 고안되었으며, 다양한 용도로 사용됩니다.
자바스크립트는 기본적으로 클라이언트 측에서 실행되는 스크립트 언어로,
웹 페이지를 동적으로 만들고, 사용자와 상호 작용하는 기능을 구현할 수 있습니다.
예를 들어, HTML 요소의 속성 값을 변경하거나, 이벤트 핸들러를 등록 하여 사용자의 동작에 따라 새로운
기능을 수행하도록 할 수 있습니다. 또한, AJAX를 이용하여 서버와 비동기적으로 데이터를 주고받는 기능을 구현할 수도 있습니다.
자바스크립트는 브라우저를 제어하는 데 주로 사용되지만,
Node.js와 같은 서버 측 프레임워크를 이용하여 서버 측에서도 사용될 수 있습니다.
이러한 이유로, 자바스크립트는 현재 가장 널리 사용되는 언어 중 하나이며, 다양한 분야에서 사용되고 있습니다.
컴파일러 VS 인터프리터
인터프리터 언어는 실행 시간에 소스 코드를 해석하여 실행하는 언어로,
코드를 컴파일하지 않고 바로 실행합니다. JavaScript 엔진은 소스 코드를 바로 실행할 수 있는 중간
코드로 변환하는 Just-In-Time 컴파일러를 사용하여 코드를 해석하고 실행합니다.
그러나 최근 JavaScript 엔진은 기계어 코드를 생성하는 옵티마이저를 갖추고 있어,
컴파일러 언어와 유사한 성능을 낼 수 있습니다. 이러한 이유로 일부 전문가들은 JavaScript를
컴파일 언어로 분류하기도 합니다.
결론적으로, JavaScript는 일반적으로 인터프리터 언어로 분류되지만,
최근의 개발 동향으로 봤을 때 컴파일러 언어와의 경계가 점점 흐려지고 있습니다.

먼저 알고 있어야 할 사전 지식

웹 페이지가 로드 되면 브라우저는 페이지의 문서 객체 모델을 생성 합니다 .
HTML DOM 모델 은 Objects 트리로 구성됩니다 .
DOM Tree 통해 JavaScript는 동적 HTML을 생성하는 데 필요한 모든 기능을 얻을 수 있습니다.
HTML 요소를 변경
HTML 속성을 변경
새로운 HTML 요소와 속성을 추가
페이지의 모든 CSS 스타일을 변경
HTML 요소 및 속성을 제거
페이지에서 새로운 HTML 이벤트를 생성
페이지의 모든 기존 HTML 이벤트에 반응