혼공자
혼공자 - 05. 함수
nswlah
2023. 4. 5. 22:11
05-1. 함수의 기본 형태
핵심 포인트
- 익명 함수란 이름이 없는 함수로 function () {} 형태로 만듭니다.
- 선언적 함수란 이름이 있는 함수로 function 함수이름 () {} 형태로 만듭니다.
- 함수의 괄호 안에 넣는 변수를 매개변수라고 합니다. 매개 변수를 통해 함수는 외부의 정보를 입력받을 수 있습니다.
- 함수의 최정적인 결과를 리턴값이라고 합니다. 함수 내부에 return 키우드를 입력하고 뒤에 값을 넣어서 생성합니다.
- 가변 매개변수 함수란 매개변수의 개수가 고정되어 잇지 않은 함수를 의미합니다. 나머지 매개변수(…)를 활용해서 만듭니다.
- 전개 연산자란 배열을 함수의 매개변수로써 전개하고 싶을 때 사용합니다.
- 기본 매개변수란 매개변수에 기본값이 들어가게 하고 싶을 때 사용하는 매개변수입니다.
확인 문제
1. A부터 B까지 범위를 지정햇을 때 범위 안의 숫자를 모두 곱하는 함수를 만들어 보세요.
<script>
function multiplyAll (numStart, numEnd) {
let result = numStart
for (let i = numStart + 1; i <= numEnd; i++) {
result *= i
}
return result
}
console.log(multiplyAll(1,2))
console.log(multiplyAll(1,3))
</script>
2. 다음 과정에 따라 최대값을 찾는 max() 함수를 만들어 보세요.
// 매개변수로 max([1,2,3,4])와 같은 배열을 받는 max() 함수를 만들어보세요.
<script>
const max = function (array) {
let output = array[0]
for (const item of array) {
if (output < item) {
output = item
}
}
return output
}
console.log(max([1,2,3,4]))
</script>
// 매개변수로 max(1,2,3,4)와 같이 숫자를 받는 max() 함수를 만들어보세요.
<script>
const max = function (...array) {
let output = array[0]
for (const item of array) {
if (output < item) {
output = item
}
}
return output
}
console.log(max(1,2,3,4))
</script>
// max([1,2,3,4]) 형태와 max(1,2,3,4) 형태를 모두 입력할 수 있는 max() 함수를 만들어보세요.
<script>
const max = function (array,...rests) {
let output
let items
if (Array.isArray(array)) {
output = array[0]
items = array
} else if (typeof array === 'number') {
output = array
items = rests
}
for (const item of items) {
if (output < item) {
output = item
}
}
return output
}
console.log(`max(배열): ${max([1,2,3,4])}`)
console.log(`max(숫자, ...): ${max(1,2,3,4)}`)
</script>
05-2. 함수 고급
핵심 포인트
- 콜백 함수란 매개변수로 전달하는 함수를 의미합니다.
- 화살표 함수란 익명 함수를 간단하게 사용하기 위한 목적으로 만들어진 함수 생성 문법입니다. () => {} 형태로 함수를 만들고, 리턴값만을 가지는 함수라면 () => 값 형태로 사용할 수 있습니다.
- 즉시 호출 함수란 변수의 이름 충돌을 막기 위해서 코드를 안전하게 사용하는 방법입니다.
- 자바스크립트의 문법 오류를 더 발생시키는 엄격 모드는 실수를 줄일 수 있는 방법입니다. 'use strict'라는 문자열을 블록 가장 위쪽에 배치해서 사용할 수 있습니다.
확인 문제
1. filter 함수의 콜백 함수 부분을 채워서 홀수만 추출, 100이하의 수만 추출, 5로 나눈 나머지가 0인 수만 추출해주세요. 그리고 코드의 실행 결과를 적어보세요.
<script>
// 변수를 선언합니다.
let numbers= [273, 25, 75, 52, 103, 32, 57, 24, 76]
// 처리합니다.
numbers
.filter((number) => number % 2 === 1)
.filter((number) => number <= 100)
.filter((number) => number % 5 === 0)
.forEach((number) => {
console.log(number)
})
</script>
// 실행결과
25
75
2. 이전에 반복문 부분에서 살펴보았던 다음과 같은 코드를 배열의 forEach메소드를 사용하는 형태로 변경해주세요.
<script>
// AS-IS
const array = ['사과', '배', '귤', '바나나']
console.log('# for in 반복문')
for (const i in array) {
console.log(i)
}
console.log('# for of 반복문')
for (const i of array) {
console.log(i)
}
// TO-BE
console.log('# for in 반복문')
array.forEach((value, index, array) => {
console.log(index)
})
console.log('# for of 반복문')
array.forEach((value, index, array) => {
console.log(value)
})
</script>