함수(function)라고 함.function을 사용하고 중괄호({})안에 실행할 여러 명령을 넣음.function 함수명() {
// 명령.
}
함수명();
함수명(변수);
// 1.
addNum();
function addNum() {
...
}
// 2.
function addNum() {
...
}
addNum();
1, 2 둘 다 문제없이 잘 실행되는 코드임.let, const라는 새로운 예약어가 등장했음.var예약어를 사용한 변수의 특징을 알아야됨.// 1. 실제 코드.
var x = 1;
function num() {
console.log("x : " + x);
console.log("y : " + y);
var y = 2;
}
num();
// 2. 자바스크립트 해석기가 인식하는 코드.
var x = 1;
function num() {
var y;
console.log("x : " + x);
console.log("y : " + y);
y = 2;
}
num();

undefined값을 가질 수 있음.interpreter)는 함수 소스를 훑어보면서 var를 사용한 변수는 따로 기억해둠.재선언과 재할당을 할 수 있음.let와 const.let 예약어로 선언한 변수는 변수를 서언한 블록({})에서만 유효하고 블록을 벗어나면 사용할 수 없음.{}블록이나 ()블록 안에서만 사용할 수 있는 변수를 '블록 변수'라고 함.let를 사용하지 않고 변수 이름과 초깃값만 할당하면 됨.let예약어를 사용해서 선언한 변수는 값을 재할당할 수는 있지만 변수를 재선언할 수는 없음.Uncaught SyntaxError: Identifier '변수명' has already been declaredUncaught ReferenceError: Cannot access '변수명' before initialization상수 변수(constant variable)임.값이 자주 바뀌는 변수는 let을 사용하고 재할당이 없는 변수라면 const를 사용.
자바스크립트는 유연성이 많아 편리한 언어이지만, 이러한 편리성으로 인해 가독성이나 디버깅을 어렵게 만듦.
전역 변수는 최소한으로 사용.
var 변수는 함수의 시작 부분에서 선언.
for문에서 카운터 변수는 var를 사용하지 않음.
ES6에서는 var보단 let를 사용하는 것이 좋음.
재사용성은 함수의 가장 큰 장점.function addNumber(num1, num2){ // 매개변수. (parameter)
var sum = num1 + num2;
return sum;
}
var result = addNumber(2, 3); // 인수. (argument)
document.write("두 수를 더 한 값 : " + result);
매개변수(parameter) -> 외부에서 값을 받아줄 변수.인수(argument) -> 매개변수가 있는 함수를 호출할 때의 실제 값.return sum : 반환값function multiple(a, b = 2 c = 3 {
return a * b + c;
}
multiple(1);로 호출한다면익명 함수란?function(a, b) {
return a + b;
}
즉시 실행 함수란?(function() {
// 명령
}());
또는
(function(매개변수) {
// 명령
}(인수));
;)을 붙임.=>(화살표) 표기법을 사용해 함수 선언을 좀 더 간단하게 할 수 있음.(매개변수) => {
// 함수 내용
}
const tmp = function() {
return "가나다";
}
↓
const tmp = () => {
return "가나다"
};
let tmp = function(user) {
document.write(user + "님 안녕하세요");
}
↓
let tmp = (user) => {
document.write(user + "님 안녕하세요");
}
let sum = function(a, b) {
return a + b;
}
↓
let sum = (a, b) => {
return a + b;
}
이벤트라고 함.이벤트가 발생했을 때 실행하는 함수를 이벤트 처리기라고 함.Ex) 키보드로 키를 누르는 것, 웹 브라우저에서 새로운 페이지를 불러오는 것 등등.이벤트는 웹 페이지를 읽어 오거나 링크를 클릭하는 것처럼 웹 문서 영역 안에서 이루어지는 동작만을 의미함.| 종료 | 설명 |
|---|---|
| click | - 사용자가 HTML 요소를 클릭할 때 이벤트가 발생함. |
| dbclick | - 사용자가 HTML 요소를 더블 클릭할 때 이벤트가 발생함. |
| mousedown | - 사용자가 요소 위에서 마우스 버튼을 눌렀을 때 이벤트가 발생함. |
| mousemove | - 사용자가 요소 위에서 마우스 포인터를 움직일 때 이벤트가 발생함. |
| mouseover | - 마우스 포인터가 요소 위로 옮겨질 때 이벤트가 발생함. |
| mouseout | - 마우스 포인터가 요소를 벗어날 때 이벤트가 발생함. |
| mouseup | - 사용자가 요소 위에 놓인 마우스 버튼에서 손을 뗄 때 이벤트가 발생함. |
| 종류 | 설명 |
|---|---|
| keydown | - 사용자가 키를 누르는 동안 이벤트가 발생함. |
| keypress | - 사용자가 키를 눌렀을 때 이벤트가 발생함. |
| keyup | - 사용자가 키에서 손을 뗄 때 이벤트가 발생함. |
| 종류 | 설명 |
|---|---|
| abort | - 문서가 완전히 로딩되기 전에 불러오기를 멈췄을 때 이벤트가 발생함. |
| error | - 문서가 정확히 로딩되지 않았을 때 이벤트가 발생함. |
| load | - 문서 로딩이 끝나면 이벤트가 발생함. |
| resize | - 문서 화면 크기가 바뀌었을 때 이벤트가 발생함. |
| scroll | - 문서 화면이 스크롤 되었을 때 이벤트가 발생함. |
| unload | - 문서에서 벗어날 때 이벤트가 발생함. |
| 종류 | 설명 |
|---|---|
| blur | - 폼 요소에 포커스를 잃었을 때 이벤트가 발생함. |
| change | - 목록이나 체크 상태 등이 변경되면 이벤트가 발생함. - <input>, <select>, <textarea>태그에서 사용함. |
| focus | - 폼 요소에 포커스가 놓였을 때 이벤트가 발생함. - <label>, <select>, <textarea>, <button> 태그에서 사용함. |
| reset | - 폼이 리셋되었을 때 이벤트가 발생함. |
| submit | - submit 버튼을 클릭했을 때 이벤트가 발생함. |
웹 문서에서 이벤트가 발생하면 처리하는 함수를 이벤트 처리기 or 이벤트 핸들러(event handler)라고 함.
Ex) 이미지를 클릭하면 큰 이미지를 보여줌.이벤트를 처리하는 가장 기본적인 방법은 이벤트가 발생한 HTML 태그에 이벤트 처리기를 직접 연결하는 것.
↓ 이벤트 처리기의 기본형식.
<태그 on이벤트명 = "함수명">
<body>
<ul>
<li><a href="#" onclick="alert('버튼을 클릭했습니다.')">Green</a></li>
<li><a href="#" onclick="alert('버튼을 클릭했습니다.')">Orange</a></li>
<li><a href="#" onclick="alert('버튼을 클릭했습니다.')">Purple</a></li>
</ul>
<div id="result"></div>
</body>
<body>
<ul>
<li><a href="#" onclick="changeBg('green')">Green</a></li>
<li><a href="#" onclick="changeBg('orange')">Orange</a></li>
<li><a href="#" onclick="changeBg('purple')">Purple</a></li>
</ul>
<div id="result"></div>
<script>
function changeBg(color) {
// querySelector('#result') : div id="result" 선택.
var result = document.querySelector('#result');
result.style.backgroundColor = color;
}
</script>
</body>
Ex. 웹 요소를 클릭했을 때 실행할 함수를 연결.
웹 요소.onclick = 함수;
querySelector()함수를 사용해서 가져오는 것.())안에는 클래스 이름 or id이름 or 다양한 선택자를 넣을 수 있음.↓ Ex) 방법 1 : 웹 요소를 변수로 지정 & 미리 만든 함수 사용
<body>
<button id="change">글자색 바꾸기</button>
<p>가나다라마바사</p>
<!-- 방법 1. -->
<script>
var changeBttn = document.querySelector("#change"); // 버튼 요소를 가져와서 changeBttn에 저장.
changeBttn.onclick = changeColor; // 함수 이름 뒤에 괄호'()'가 없다는 것에 주의할 것.
function changeColor() {
document.querySelector("p").style.color = "#f00";
}
</script>
</body>
↓ Ex) 방법 2 : 웹 요소를 따로 변수로 만들지 않고 사용. (웹 요소를 여러 번 사용하지 않을 경우.)
document.querySelector("#change").onclick = changeColor;
function changeColor() {
document.querySelector("p").style.color = "#f00";
}
↓ Ex) 방법 3 : 직접 함수를 선언 (함수를 딱 한 번만 사용한다면.)
document.querySelector("#change").onclick = function() {
document.querySelector("p").style.color = "#f00";
};