안녕하세요! 첫 번째 과제에서는 자바 스크립트의 함수에 대해 공부하고자 합니다 ✏️
함수란?
먼저 자바스크립트에서 함수란 하나의 동작을 하기 위한 코드 덩어리라고 설명할 수 있습니다.
함수를 정의하면 코드를 간결하게 사용할 수 있을뿐더러, 명령의 목적을 확실하게 구분할 수 있어 편리합니다.
함수를 사용하는 방법은 다음과 같습니다.
- 함수를 만들 때 이름을 붙이고
- 필요할 때 함수의 이름을 사용해 실행
1번과 2번을 각각 함수를 선언한다, 함수를 호출한다고 합니다.
함수의 기본형은 다음과 같습니다.
function 함수명() {
명령
}
다음 코드를 보면서 함수를 선언하고 호출하는 방법을 알아봅시다.
<script>
function addNumber(){
console.log(3+8);
}
addNumber();
</script>
실행결과 >> 11
addNumber() 함수를 정의하였습니다.
addNumber() 함수는 3+8의 결과를 콘솔에 출력하는 함수입니다.
매개변수를 입력받는 함수
반드시 매개변수를 입력받아야 하는 함수
위의 함수는 오직 3 + 8의 결과만을 출력하기 때문에 재사용할 수 없습니다.
지금부터 재사용이 가능한 addNumber() 함수를 만들어봅시다.
두 수를 입력받아 더한 값을 출력하는 함수를 만들기 위해서는
"값 두 개를 받겠다." 라는 선언이 필요합니다.
이때 외부로 부터 입력받는 값을 매개변수라고 합니다.
매개변수가 있는 함수는 다음과 같이 선언합니다.
function 함수명(매개변수명, 매개변수명) {
명령
}
두 값을 더한 값을 출력하는 함수를 다시 선언해 봅시다.
<script>
function addNumber(x, y){
console.log(x+y);
}
addNumber(3, 8);
</script>
실행결과 >> 11
위에서 언급한 것처럼, 값 두 개를 받겠다고 선언하였으니 함수를 호출할 때에도 값 두 개를 입력해야 합니다.
기본값을 지정한 매개변수를 입력받는 함수
하지만 함수를 호출할 때 매개변수의 값을 입력받지 못하였을 때에는 NaN(Not a Number) 에러를 발생시킵니다.
이러한 상황을 방지하기 위해 매개변수의 기본값을 지정할 수 있습니다.
매개변수의 기본값을 지정한 함수는 다음과 같이 선언합니다.
function 함수명(매개변수 = 기본값) {
명령
}
매개변수의 기본값을 지정하여 addNumber() 함수를 선언해 보겠습니다.
<script>
function addNumber(x = 3, y = 8){
console.log(x+y);
}
addNumber();
</script>
실행결과 >> 11
기본값을 지정하면, 매개변수를 넘겨받지 않아도 에러가 발생하지 않습니다.
반환값이 있는 함수
위에서 만들었던 addNumber() 함수는 오직 콘솔에서만 결괏값을 확인할 수 있습니다.
저는 연산 결과를 화면에도 출력하고 싶고, 변수에 값을 저장하고 싶은데 이럴 때에는 addNumber() 함수를 사용하지 못합니다.
이러한 문제를 해결하기 위해 return 문을 사용한 함수를 정의하고자 합니다.
return문을 사용하면 함수를 실행한 후 그 결괏값을 함수 밖으로 반환할 수 있습니다.
return문이 있는 함수는 다음과 같이 선언합니다.
function 함수명(매개변수명){
명령
return 반환값;
}
그럼 return문을 사용하여 addNumber() 함수를 선언해 보겠습니다.
<script>
function addNumber(x, y){
var result = x + y;
return result;
}
var a = addNumber(3, 8);
document.write(addNumber(3, 8));
console.log(addNumber(3, 8));
</script>
실행결과 >>
반환값이 있으니, 함수의 재사용이 더욱 간편해졌습니다!
이번 게시물에서는 자바스크립트의 함수에 대해 아주 기초적인 부분을 공부했습니다!
다음 게시물에서는 익명 함수와 즉시 실행 함수, 다양한 함수 표현식에 대해 공부해 보겠습니다
'Programming Language > JavaScript' 카테고리의 다른 글
[JavaScript] 데이터 단위 변환기 토이 프로젝트 만들어보기 (0) | 2023.05.06 |
---|---|
[JavaScript] DOM 객체로 HTML 요소의 속성 바꾸기 (0) | 2023.05.05 |
[JavaScript] DOM 객체와 이벤트 처리 (2) | 2023.04.28 |
[JavaScript] 이벤트와 이벤트 처리기 (0) | 2023.04.23 |
[JavaScript] 익명 함수, 즉시 실행 함수, 다양한 함수의 표현법 알기 (0) | 2023.04.23 |