함수
변수에는 데이터만 저장할 수 있고, 코드는 저장할 수 없습니다.
하지만 함수를 사용하면 코드를 메모리에 저장했다가 필요할 때마다 호출하여 사용할 수 있습니다.
함수
- 자바스크립트 코드를 저장합니다.
- function이라는 키워드를 이용하여 선언합니다.
- 출력문, 제어문 등의 코드를 저장하고 데이터를 반환합니다.
선언적 함수
기본 함수 정의문
함수를 사용하여 코드를 저장한 것을 '함수 정의문' 이라고 합니다.
변수를 선언할 때 var 키워드를 사용한 것처럼 함수에서는 function 키워드를 사용해 변수를 선언합니다.
기본형
자바스크립트 코드;
}
함수 정의문({...}) 안에 작성된 코드는 즉시 실행되지 않습니다.
함수는 메모리에 할당되어 대기하고 있다가 함수가 호출되면 실행됩니다.
정의되어 있는 함수를 호출하는 기본형
또는 참조 변수();
적용 예제
{
function func(){
document.write("함수가 실행되었습니다.");
}
func();
}
"함수가 실행되었습니다."가 출력됩니다.
익명 함수
익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 실행 방식입니다.
익명 함수의 코드는 변수값이므로 끝에 세미콜론(;)을 대입합니다.
익명함수는 호출시 변수명을 함수처럼 사용하면 됩니다.
익명 함수는 변수에 함수의 코드를 저장하는 대신 함수명을 사용하지 않습니다.
대신 변수명을 마치 함수명처럼 사용해서 함수를 호출하거나 변수값을 이동시키는데 사용할 수 있습니다.
익명 함수 기본형
{
실행문;
};
변수값을 변수에 넣은 형태이므로 함수 코드 끝에 세미콜론을 붙여줍니다.
적용예제
<script>
//익명 함수 선언 및 변수에 대입
var hello = function()
{
document.write("Hello World!")
};
//익명 함수 변수명으로 호출
hello();
</script>
"Hello World!"가 출력됩니다.
매개변수 함수
기본 함수 정의문은 함수 안에 있는 코드를 실행할 때 단순히 함수명으로 호출해서 코드를 실행했습니다. 즉, 함수를 호출할 때 값을 전달할 수 없었습니다.
하지만 매개변수가 있는 함수 정의문은 함수를 호출할 때 전달하고자 하는 값을 입력하여 호출할 수 있습니다. 이렇게 전달된 값은 매개변수가 받아 함수 정의문에서 사용할 수 있게 됩니다.
함수를 호출할 때 값을 전달하는 기본형
자바스크립트 코드;
}
함수명(데이터 1, 데이터 2, ...데이터 n);
함수를 호출할 때 데이터 1은 매개변수 1에 저장되고 데이터 2는 매개변수 2에 저장됩니다. 그리고 데이터 n은 매개변수 n에 저장됩니다.
적용 예제
{
function func (str){
document.write(str);
}
func("함수가 실행되었습니다.");
}
"함수가 실행되었습니다."가 출력됩니다. (str은 매개 변수)
리턴값 함수
return문은 함수에서 결괏값을 반환할 때 사용합니다.
그리고 함수에서 return문이 실행되면 반복문의 break문과 비슷하게 코드가 강제로 종료됩니다.
다시 말해 함수 정의문에 return문이 사용되면 함수를 호출했을 때 결괏값(data)을 반환합니다.
return문 기본형
자바스크립트 코드1; -- 2번
return 데이터(값); -- 3번
자바스크립트 코드2;
} var 변수 = 함수명(); -- 1번
1번 함수 호출문 --> 2번 함수 코드 실행 --> 3번 자바스크립트 코드2를 무시하고 데이터를 반환 --> 1번 함수 호출문
기본 예제
function sum(num1, num2) {
return num1 + num2;
}
var result = sum(10, 20);
document.write(result);
- 함수 호출과 함께 인자값 10, 20을 전달합니다.
- 수학 함수(calc())는 num1(10)과 num(20)의 데이터를 더한 값인 30을 반환합니다.
- 반환된 값은 변수 result에 저장되어 화면에 출력됩니다.
적용 예제
{
function func (){
const str = "함수가 실행되었습니다.";
return str;
}
document.write(func());
}
"함수가 실행되었습니다"가 출력됩니다.