05-1 함수의 기본 형태
함수는 "아무것이나 원하는대로 사용해도 된다."
코드를 작성하는데 정답은 없다. 코드를 실행하는데 문제가 없다면 어떤 형태로 사용해도 좋다.
익명함수
기본형태
function () {}
선언적 함수
// 함수에 이름을 붙임
function 이름() {
}
//다음과 같은 기능을 수행
let 이름 = function () {}
매개변수와 리턴값
기본 형태
function 함수(매개변수, 매개변수, 매개변수) {
문장
문장
return 리턴값
}
기본적인 함수 예제
윤년을 확인하는 함수
4로 나누어 떨어지면 윤년
100으로 나누어 떨어지면 윤년X
400으로 나누어 떨어지면 윤년
윤년이면 true, 윤년이 아니면 false
<script>
let a = prompt('년도를 입력해주세요.', '')
// 조건부 함수를 넣어 코드를 간단하게 구성
function isLeapYear() {
return (a % 4 === 0) && (a % 100 !== 0) || (a % 400 === 0)
}
// 100을 입력했을 경우: true && false || false 이므로 false
// 400을 입력했을 경우: true && false || true 이므로 true
// 4를 입력했을 경우: true && true || false 이므로 true
// 1989를 입력했을 경우: false & true || false 이므로 false
console.log(isLeapYear(a))
</script>
A부터 B까지 더하는 함수 만들기
나의 시도한것:
1. 사용자가 a 와 b를 입력한다.
2. a부터 b까지의 값을 리턴한다.
그러나 실패 ㅜㅜ
<script>
let a = prompt('A를 입력해주세요', '')
let b = prompt('B를 입력해주세요', '')
function sumAll(a, b) {
let ouput = '0'
for (let i = a; i <= b; i++) {
output += i
}
return output
}
console.log(`${a}부터 ${b}까지의 합: ${sumAll(a, b)}`)
</script>
A부터 B까지 더하는 함수 정답
<script>
function sumAll(a,b) {
let output = 0
for (let i = a; i <= b; i++) {
output += i
}
return output
}
console.log(`1부터 100까지의 합: ${sumAll(1, 100)}`)
console.log(`1부터 500까지의 합: ${sumAll(1, 500)}`)
</script>
응용문제:
A부터 B까지 곱하는 함수
<script>
function timesAll(a, b) {
// 초기값이 0이면 어떤 수를 곱해도 0이므로, 초기값을 1로 설정
let output = 1
for (let i = a; i <= b; i++) {
output *= i
}
return output
}
console.log(`1부터 5까지의 곱: ${timesAll(1, 5)}`)
console.log(`1부터 10까지의 곱: ${timesAll(1, 10)}`)
</script>
최솟값 구하는 함수 만들기
<script>
function min(array) {
// output = array[0] 은 output을 array의 0번째 값으로 설정한다는 의미
let output = array[0]
for (const item of array) {
// 현재 output 보다 더 작은 item이 있다면
if (output > item) {
// output 값을 item으로 변경
output = item
}
}
return output
}
const testArray = [52, 273, 32, 103, 275, 24, 57]
console.log(`${testArray}중에서`)
console.log(`최솟값 = ${min(testArray)}`)
</script>
최댓값 구하기로 변형
<script>
function max(array) {
let output = array[0]
for (const item of array) {
if (output < item) {
output = item
}
}
return output
}
const testArray = [52, 273, 32, 103, 275, 24, 57]
console.log(`${testArray}중에서`)
console.log(`최대값 = ${max(testArray)}`)
</script>
나머지 매개변수
기본 형태
function 함수 이름(...나머지 매개변수) {}
예시
<script>
function sample(...items) {
console.log(items)
}
sample(1,2)
sample(1,2,3)
sample(1,2,3,4)
</script>
- 값이 배열로 들어온다
이를 이용하면 최솟값 구하기 함수를 아래처럼 변형할수 있다.
<script>
// 나머지 매개변수를 사용한 함수 만들기
function min(...items) {
// 매개변수 items는 배열처럼 사용합니다.
let output = items[0]
for (const item of items) {
if (output > item) {
output = item
}
}
return output
}
// 함수 호출하기
console.log('min(52,273,32,103,275,24,57)')
console.log(`=${min(52,273,32,103,275,24,57)}`)
</script>
나머지 매개변수와 일반 매개변수 조합하기
기본 형태
function 함수 이름(매개변수, 매개변수, ...나머지 매개변수) { }
매개변수의 자료형에 따라 다르게 작동하는 min()함수
<script>
function min(first, ...rests) {
// 변수 선언하기
let output
let items
// 매개변수의 자료형에 따라 조건 분기하기
// Array.isArray() 메소드를 사용하여 배열인지 확인할 수 있다.
// 배열인지 숫자인지에 따라 계산법이 달라진다.
if (Array.isArray(first)) {
output = first[0]
items = first
} else if (typeof(first) === 'number') {
output = first
items = rests
}
// 이전 절에서 살펴보았던 최솟값 구하는 공식
for (const item of items) {
if (output > item) {
output = item
}
}
return output
}
//물론 결과는 같다.
console.log(`min(배열): ${min([52,273,32,103,275,24,57])}`)
console.log(`min(숫자, ...): ${min(52,273,32,103,275,24,57)}`)
</script>
전개연산자
기본형태
함수 이름(...배열)
예시

총평
오늘 오전에 시험을 일찍 마치고 오후/저녁은 의성으로 저녁식사하러 갔다. 시험이 그다지 어렵지 않아서 다행이었고 이러 저러해서 원하는 기능을 구현할 수 있다는게 상당히 기쁘고 뿌듯한 일이다. 그래서 코딩이 점점 재밌어진다. 물론 아직 시작도 안한 단계이지만 이런 경험이 쌓이고 쌓여서 늘어가는것 아니겠는가.
'Hanghae99' 카테고리의 다른 글
| 221110 TIL Chapter 06 객체 첫번째 시간 (0) | 2022.11.10 |
|---|---|
| 221110 TIL Chapter 05 함수 두번째시간 (0) | 2022.11.10 |
| 221109 TIL 사전시험 문제풀이 (0) | 2022.11.09 |
| 221108 TIL Chapter 04 반복문 (0) | 2022.11.08 |
| 221108 TIL Chapter 03 조건문 (0) | 2022.11.08 |