728x90
자바스크립트 함수의 기본 형태
📌 함수
코드의 집합
{}내부에 코드를 넣기 때문
📌 함수 호출
함수를 사용하는 것
📌 매개변수
함수를 호출할 때 괄호 내부에 여러 가지 자료를 넣는데, 이 자료를 매개변수라고 한다.
📌 리턴값
함수를 호출해서 최종적으로 나오는 결과
📌 함수를 사용하면 좋은점
- 반복되는 코드를 한번 정의해놓고 필요할 때마다 호출하므로 반복 작업을 피할 수 있다.
- 긴 프로그램을 기능별로 나눠 모듈화해두면, 전체 코드의 가독성이 좋아진다.
- 기능별(함수별)로 수정이 가능하므로 유지보수가 쉽다.
📌 익명함수
function() { }
📌 선언적 함수
function 함수() {
}
let 함수 = function() { };
📌 매개변수와 리턴값
function 함수(매개변수, 매개변수, 매개변수){
문장
문장
return 리턴값
}
모든 함수가 매개변수와 리턴값을 사용하는 것이 아니라 필요한 경우에만 매개변수와 리턴값을 사용합니다.
<script>
function f(x){
return x*x
}
console.log(f(3))
</script>
📌 윤년인지 확인하는 함수
<script>
let year = Number(prompt('연도를 입력하세요.',''))
function isLeapYear(year){
return (year % 4 === 0) && (year % 100 !== 0) || (year % 400 === 0)
}
alert(`${year}는 윤년일까? === ${isLeapYear(year)}`)
</script>
📌 숫자 계산하는 함수
function 함수(매개변수) {
let output = 초기값
처리한다
return output
}
일반적으로 숫자를 계산해서 출력할 때는 다음과 같은 형태의 함수를 사용한다.
📌 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 multiplyAll(a, b){
let output = 1
for(let i = a; i <= b; i++){
output *= i
}
return output
}
console.log(multiplyAll(1,2))
console.log(multiplyAll(1,3))
</script>
📌 가변 매개변수
호출 할때 매개변수의 개수가 고정적이지 않은 함수
📌 최솟값 구하기
<script>
function min(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(`최소값 = ${min(testArray)}`)
</script>
📌 나머지 매개변수(rest parameter)
function 함수 이름(...나머지 매개변수) { }
함수 매개변수 앞에 마침표 3개를 입력하면 매개변수들이 배열로 들어온다.
📌 나머지 매개변수 활용한 min함수
<script>
function min(...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>
📌 전개연산자 사용
<script>
function sample(...items){
console.log(items)
}
const array = [1, 2, 3, 4]
console.log('# 전개 연산자를 사용하지 않는 경우')
sample(array)
console.log('# 전개 연산자를 사용하는 경우')
sample(...array)
</script>
전개연산자를 사용하지 않는 경우 배열이 매개변수로 들어오고
전개연산자를 사용하는 경우, 숫자가 하나하나 전개되어 매개변수로 들어온다.
※ 구버전 : apply() 함수 이용
📌 어떤 자료가 배열인지 확인
Array.isArray()
typeof로는 배열인지 확인할 수 없다.
📌 배열인지 아닌지에 따라 분기
<script>
function min(first, ...rests){
let output
let items
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,103,275,24,57)}`)
console.log(`min(숫자, ...) : ${min(52,273,[103,275,24,57])}`)
console.log(`min(숫자, ...) : ${min([103,275,80,57], 52,273)}`)
</script>
처음 입력된 값이 배열이면, 배열에 관한 min 구하고 끝난다.
만약 처음 입력된 값이 숫자이면, 숫자에 대한 min을 구하고 끝난다.
📌 기본 매개변수
항상 비슷한 값을 입력하는 경우, 같은 매개변수를 여러번 반복할 필요 없이 기본 매개변수로 설정해준다.
📌 급여계산하기
기본 매개변수로 시급 8,590원, 근무시간 40시간
<script>
function earnings(name, wage=8590, hours=40){
console.log(`# ${name} 님의 급여 정보`)
console.log(`- 시급 : ${wage}원`)
console.log(`- 근무시간 : ${hours}시간`)
console.log(`- 급여 : ${wage * hours}원`)
}
earnings('구름')
earnings('별', 10000)
earnings('인성', 10000, 52)
</script>
※ 구버전
wage = typeof(wage) != undefined ? wage : 8590
hours = typeof(hours) != undefined ? hours : 52
wage = wage || 8590
hours = hours || 52
📌 윤년인지 확인하기
기본 매개변수로 올해년도가 들어감.
<script>
function isLeapYear(year = new Date().getFullYear()){
console.log(`매개변수 year: ${year}`)
return (year % 4 === 0) && (year % 100 !== 0) || (year % 400 === 0)
}
console.log(`올해는 윤년일까? === ${isLeapYear()}`)
</script>
📌 배열 최대값 찾기
<script>
const max = function(array){
let output = array[0]
for(const item of array){
if(item > output){
output = item
}
}
return output
}
console.log(max([1,2,3,4]))
</script>
📌 숫자 최대값 찾기
<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>
📌 배열과 숫자 모두 입력받아 최댓값 찾기
<script>
const max = function(first,...rests){
let output
let items
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(`max(배열): ${max([1,2,3,4])}`)
console.log(`max(숫자, ...): ${max(1,2,3,4)}`)
</script>
참고한 책 : 혼자 공부하는 자바스크립트
'JavaScript' 카테고리의 다른 글
자바스크립트 객체의 기본 (0) | 2022.11.04 |
---|---|
자바스크립트 함수 고급 (0) | 2022.11.03 |
자바스크립트 반복문 (0) | 2022.11.03 |
자바스크립트 배열 (0) | 2022.11.02 |
자바스크립트 조건문 (0) | 2022.11.02 |