
1) 함수 : 자바스크립트는 단순히 동작 하나만 실행되는 것이 아니라 여러 가지 동작이 연결되는데 동작해야 할 목적대로 묶은 명령이다.
각 명령의 시작과 끝을 명확하게 구별할 수 있다.
묶은 기능에 이름을 붙여 어디서든 같은 이름으로 명령을 실행할 수 있다.
자바스크립트에 들어 있는 함수를 가져다 사용하거나 자신이 필요한 명령을 직접 함수로 만들어서 사용한다.
2) 함수를 선언한다.
function 함수명( ) {
명령
}
3) 함수를 호출한다.
함수명( ) 또는 함수명(변수)
1) 지역 변수 : 함수 안에서만 쓸 수 있는 변수
함수 안에서 선언하고 함수 안에서만 사용한다.
예약어 var을 사용하여 변수 이름을 지정한다.
2) 전역 변수 : 스크립트 안에서 자유롭게 쓸 수 있는 변수
적용 범위를 제한하지 않고 쓸 수 있다.
-> 스크립트 코드 전체에서 사용할 수 있다.
함수 밖에서 선언하거나 함수 안에서는 예약어 var을 빼고 선언하여야 한다.
3) 호이스팅 : 상황에 따라 변수의 선언과 할당을 분리해서 선언 부분을 스코프의 가장 위쪽으로 끌어올리는 것이다.
자바스크립트 해석기는 함수 소스를 훑어보면서 var을 사용한 변수는 따로 기억해 둔다.
변수를 싱행하기 전이지만 '이런 변수가 있구나'라고 기억해 두기 때문에 마치 선언한 것과 같은 효과가 있는 것이다.
-> 따라서 변수를 선언하고 할당했지만 변숫값이 할당된 위치가 다르게 나타난다.
그러나 실제 코드가 바뀌는 것이 아니라 자바스크립트 해석기가 이해하는 방식이 이렇다는 것이며 실제 코드에는 변화 없다.
1) let
값을 재할당할 수는 있지만 변수를 재선언할 수 없다.
호이스팅이 없는 변수이다.
2) const
변하지 않는 값을 변수로 선언할 때 사용한다.
-> 재선언하거나 재할당할 수 없다.
값이 자주 바뀌는 변수는 let 예약어를 사용하고, 재할당이 없는 변수라면 const 예약어를 사용한다.
3) 자바스크립트 변수 사용
① 전역 변수는 최소한으로 사용한다.
② var 변수는 함수의 시작 부분에서 선언한다.
③ for 문에서 카운터 변수를 사용할 때는 var 예약어를 사용하지 않는다.
| 구분 | var | let | const |
|---|---|---|---|
| 스코프 | 함수 레벨 | 블록 레벨 | 블록 레벨 |
| 재할당 | 가능 | 가능 | 불가능 |
| 재선언 | 가능 | 불가능 | 불가능 |
1) 함수 선언할 때 매개변수 지정하기

<body>
<script>
function addNumber(num1, num2) {
var sum = num1 + num2;
return sum;
}
var result = addNumber(2, 5);
document.write("두 수를 더한 값" + result);
</script>
</body>
① 자바스크립트 해석기가 function 예약어를 만나면 함수를 선언하는 부분이라는 것을 인식하고 ({ })을 해석하며 실행하지는 않는다.
② addNumber(2, 3)을 만나면 해석해 두었던 addNumber( ) 함수를 실행한다.
③ addNumber( ) 함수에서 2는 num1, 5는 num2로 넘기고 더한 값을 sum에 저장한다.
④ 함수 실행이 모두 끝나면 결과 값을 sum 을 함수 호출 위치인 var result로 넘긴다.
⑤ 넘겨받은 결과 값을 result라는 변수에 저장한다.
⑥ document.write( )를 사용하여 result 변수에 있는 값을 화면에 표시한다.
1) 익명 함수 : 이름이 없는 함수
익명 함수를 선언할 때 이름을 붙이지 않는다.
함수 자체가 시이므로 함수를 변수에 할당할 수 있으며 다른 함수의 매개변수로 사용할 수 있다.
2) 즉시 실행 함수 : 함수를 실행하는 순간 자바스크립트 해석기에서 함수를 해석한다.
(function( ) {
명령
}());
(function(매개변수) {
명령
}(인수));
3) 화살표 함수 : => 표시법을 사용하여 함수 선언을 간단하게 작성한다.
(매개변수) => { 함수 내용 }
1) 마우스 이벤트
| 종류 | 설명 |
|---|---|
| click | 사용자가 HTML 요소를 클릭할 때 이벤트가 발생한다. |
| dbclick | 사용자가 HTML 요소를 더블 클릭할 때 이벤트가 발생한다. |
| mouseclick | 사용자가 요소 위에서 마우스 버튼을 눌렀을 때 이벤트가 발생한다. |
| mousemove | 사용자가 요소 위에서 마우스 포인터를 움직일 때 이벤트가 발생한다. |
| mouseover | 마우스 포인터가 요소 위로 옮겨질 때 이벤트가 발생한다. |
| mouseout | 마우스 포인터가 요소를 벗어날 때 이벤트가 발생한다. |
| mouseup | 사용자가 요소 위에 놓인 마우스 버튼에서 손을 뗄 때 이벤트가 발생한다. |
2) 키보드 이벤트
| 종류 | 설명 |
|---|---|
| keydown | 사용자가 키를 누르는 동안 이벤트가 발생한다. |
| keypress | 사용자가 키를 눌렀을 때 이벤트가 발생한다. |
| keyup | 사용자가 키에서 손을 뗄 때 이벤트가 발생한다. |
3) 문서 로딩 이벤트
| 종류 | 설명 |
|---|---|
| abort | 문서가 완전히 로딩되기 전에 불러오기를 멈췄을 때 이벤트가 발생한다. |
| error | 문서가 정확히 로딩되지 않았을 때 이벤트가 발생한다. |
| load | 문서 로딩이 끝나면 이벤트가 발생한다. |
| resize | 문서 화면 크기가 바뀌었을 때 이벤트가 발생한다. |
| scroll | 문서 화면이 스크롤되었을 때 이벤트가 발생한다. |
| unload | 문서에서 벗어날 때 이벤트가 발생한다. |
4) 폼 이벤트
| 종류 | 설명 |
|---|---|
| blur | 폼 요소에 포커스를 잃었을 때 이벤트가 발생한다. |
| change | 목록이나 체크 상태 등이 변경되면 이벤트가 발생한다. |
| input 태그, select 태그, textarea 태그에서 사용한다. | |
| focus | 폼 요소에 포커스가 놓였을 때 이벤트가 발생한다. |
| label 태그, select 태그, textarea 태그, button 태그에서 사용한다. | |
| reset | 폼이 리셋되었을 때 이벤트가 발생한다. |
| submit | submit 버튼을 클릭했을 때 이벤트가 발생한다. |
5) 이벤트 처리기 : 웹 문서에서 이벤트가 발생하면 처리하는 함수이다.
<태그 on이벤트명 = "함수명">