: 웹 브라우저에서 바로 실행되는 클라이언트 측 스크립트 혹은 프로그래밍 언어로, 웹 페이지에서 동적 기능을 구현한다.
// 한 줄 주석
/* 여러
줄
주석/
/*
여러
줄
주석
/
: HTML 문서 내부에 자바스크립트 소스코드를 두는 방식
<script>
alert('hello world');
</script>
: HTML 문서 외부에 별도의 파일을 생성하고 HTML 에서 불러와 사용하는 방식으로, 이때 자바스크립트 파일의 위치는 HTML과 동일한 서버 혹은 외부 서버일수도 있다.
//external.js 파일
function printDate() {
alert('hello world');
}
<head>
<script src="../external.js"></script>
<!-- 외부 서버의 js파일 참고할 경우 아래와 같이 사용 -->
<script src="https://www.cdn.com/myjs/external.js"></script>
</head>
: 브라우저는 HTML의 구조와 CSS 스타일을 렌더링하는 도중 자바스크립트를 만나게 되면 이에 대한 해석과 구현이 완료될때까지 브라우저 렌더링을 멈추게 되므로, 적절한 위치선정이 필요하다.
- 문서를 초기화하거나 설정하는 가벼운 스크립트들을 주로 사용한다. - 웹페이지 로딩이 완료된 다음 실행하기 위해 일반적으로는 바로 앞에 위치한다.내부 자바스크립트 VS 외부 자바스크립트
- 비교적 간단한 코드로 구성되며 현재 파일에만 적용되는 경우 내부 자바스크립트를 사용한다.
- 공통기능 구현이나 소스가 길어지면 외부 자바스크립트로 관리한다.
: 일반적으로 프로그래밍 언어에서 이벤트라고 하면 사용자의 동작 혹은 프로그램에서 발생하는 특정한 상황을 의미 한다. 이벤트가 발생하면 보통 사전에 정의된 특정 코드가 실행되고 그에 따라 기능이 동작하거나 화면이 변경되는 등의 변화가 발생 한다.
| 이벤트명 | 설명 |
|---|---|
| click | 클릭시 발생 |
| change | 변동이 있을시 발생 |
| focus | 포커스를 얻었을때 발생 |
| keydown | 키를 눌렀을때 발생 |
| keyup | 키에서 손을 땟을때 발생 |
| load | 문서의 로드가 완료 되었을때 발생 |
| unload | 문서가 언로드 되었을때 발생 |
| resize | 윈도우 크기가 변경될 경우 발생 |
| mouseover | 마우스가 특정 객체 위로 올려졌을 시에 발생 |
| mousedown | 마우스를 클릭 했을때 발생 |
| mouseout | 마우스가 특정 객체 밖으로 나갔을 때 발생 |
| mousemove | 마우스가 움직였을 때 발생 |
| mouseup | 마우스에서 손을 땟을때 발생 |
| select | option 태그 등에서 선택을 했을때 발생 |
| submit | 입력양식이 제출 요청 될때 발생 |
: 이벤트 발생을 감지하고 처리할 코드를 수행하는 역할을 담당한다. HTML 태그의 속성으로 지정하거나 자바스크립트에서 DOM 엘리먼트의 속성에 콜백 함수를 정의하는 형식으로 사용할 수 있다. 이벤트 핸들러는 앞의 이벤트 이름의 앞에 on을 붙여 사용한다.
<input type="button" value="Button" onclick="alert('버튼 클릭됨!!')"></input>
<script>
document.getElementById('b1').onclick = function() {alert("버튼 클릭됨!!")}
</script>
<body>
<input type="button" id="b1">
</body>
document.getElementById() 메서드는 HTML문서에서 지정한 id 속성을 찾아 바인딩한다.
이벤트 발생시 할당된 함수부가 호출 되어 콜백 함수라고 한다.
DOM(Document Object Model)
: 문서객체모델이라고 하며 HTML 문서를 객체화한 것으로, HTML 문서의 계층적 구조와 정보를 표현한다.
페이지의 콘텐츠, 구조, 스타일 등 각각의 요소에 접근하여 읽고 조작할 수 있는 API를 제공하는 웹 페이지에 대한 인터페이스이다.

출처
https://dinfree.com/lecture/frontend/123_js_1.html
https://velog.io/@14_seungchan/DOM
https://hi5june.tistory.com/40