Chapter 5-1 (1) 196-205

temp·2022년 9월 26일
0

9/26

Q. 어떤 함수를 언제 활용해야 할까?
👉🏻 아무 것이나 원하는 대로!!

용어 정리

  • 함수 : 코드의 집합을 나타내는 자료형
  • 함수 호출 : 함수를 사용하는 것
  • 매개 변수 : 함수를 호출할 때 괄호 내부에 여러 가지 자료를 넣게 되는데, 이 자료!
  • 리턴값 : 함수를 호출해서 최종적으로 나오는 결과

익명 함수

  • 이름이 붙어있지 않은 함수

함수의 기본 형태

function () { }


선언적 함수

  • 이름이 붙어 있는 함수

선언적 함수의 형태

function 함수() { }

let 함수 = function () {}; 와 동일한 기능 수행


매개변수와 리턴값

  • prompt()
    declare function prompt(message?: string, _default?: string): string | null;

    • prompt() 함수를 사용할 때는 매개변수로 message를 넣어야 한다.
    • 그러면 문자열로 최종결과가 나오게 되고, 이 최종결과가 리턴값
  • 모든 경우에 매개변수와 리턴값을 사용하는 것이 아니라 필요한 경우에만 사용한다.

매개변수와 리턴값을 갖는 함수의 형태

function 함수(매개변수, 매개변수, 매개변수) {
  문장
  문장
  return 리턴값
}

기본적인 함수 예제

① 윤년을 확인하는 함수 만들기

  • 윤년의 특징
    • 4로 나누어 떨어지는 해는 윤년이다.
    • 100으로 나누어 떨어지는 해는 윤년이 아니다.
    • 하지만 400으로 나누어 떨어지는 해는 윤년이다.
  • 윤년의 특징을 isLeapYear()라는 이름의 함수로 구현해보기!
function isLeapYear(year) {
        return (year % 4 === 0) && (year % 100 !== 0) || (year % 400 === 0)
      }

console.log(`2020년은 윤년일까? === ${isLeapYear(2020)}`)
console.log(`2010년은 윤년일까? === ${isLeapYear(2010)}`)

//출력결과
2020년은 윤년일까? === true
2010년은 윤년일까? === false

📎 &&, || 알아보기

② A부터 B까지 더하는 함수 만들기

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)}`)

③ 최솟값 구하는 함수 만들기

function min(array) {
        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)}`)

9/26

나머지 매개변수

: 가변 매개변수 함수를 구현할 때 사용된다.

가변 매개변수 함수 : 호출할 때 매개변수의 개수가 고정적이지 않은 함수

📌가변 매개변수 함수 사용 방법

function 함수 이름(...나머지 매개변수) {}
  • 함수의 매개변수 앞에 마침표 3개(...)를 입력하면 매개변수들이 배열로 들어온다.

array = [52, 273, 32, 103]
function 함수(...array) {}
여기서 (...array) = (52, 273, 32, 103)

function sample(...items) {
	console.log(itmes)
}

sample(1, 2) 	// [1, 2]  단순하게 숫자의 나열로 입력했지만 배열로 출력된다는거!

나머지 매개변수와 일반 매개변수 조합하기

function 함수 이름 (매개변수, 매개변수, ...나머지 매개변수) {}
function sample(a, b, ...c) {
	console.log(a, b, c)
}

sample(1, 2)			// 1, 2, []
sample(1, 2, 3)			// 1, 2, [3]
sample(1, 2, 3, 4)		// 1, 2, [3, 4]

(연습) 입력된 자료형에(배열 or 숫자형) 따라 다르게 작동하는 min() 함수

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,32,103,275,24,57)}`)

출력결과

min(배열): 24
min(숫자, ...): 24

전개 연산자

📌

  • 나머지 매개변수 : 함수를 구현할 때 사용되는 개념
  • 전개 연산자 : 함수를 호출할 때 사용되는 개념
// 단순하게 매개변수를 모두 출력하는 함수
function sample(...items) {
  console.log(items)
}

// 전개 연산자 사용 여부 비교하기
const array = [1, 2, 3, 4]

console.log('# 전개 연산자를 사용하지 않은 경우')
sample(array)
console.log('# 전개 연산자를 사용한 경우')
sample(...array)

const array2 = ['사과', '배']

sample(array2)
sample(...array2)
sample('사과', '배')

출력 결과

전개 연산자를 사용하지 않은 경우
[ [ 1, 2, 3, 4 ] ]
전개 연산자를 사용한 경우
[ 1, 2, 3, 4 ]

[ [ '사과', '배' ] ] 		// 전개 연산자 미사용   
[ '사과', '배' ]			// 전개 연산자 사용
[ '사과', '배' ]			// 단순 string의 나열로 직접 입력(= 전개연산자)
  • 함수 구현할 때 나머지 매개변수를 사용하게 되면 그냥 단순히 숫자형,문자열로만 입력해도 배열로 반환된다.
  • 근데 배열을 입력했으니 배열이 중첩되는 것!
    • 나머지 매개변수 사용하면,
    • 입력 : a // 리턴 : [a]
    • 여기서 a가 [1,2,3,4] 이므로, a 대신 넣게 되면 >> [[1,2,3,4]] 의 형태가 되는 것!
profile
공부한 내용 정리중...

0개의 댓글