TIL

4일차 JavaScript 챕터 5 - 함수

김영재0412 2022. 11. 11. 17:16

함수의 기본 형태

함수를 사용하는 것을 함수 호출이라하며, 함수를 호출할 때는 괄호 내부에 넣는 여러 자료를 매개변수라하며, 함수를 호출해서 최종적으로 나오는 결과를 리턴값이라고 부른다.

 

함수의 장점

  • 반복되는 코드를 한번 정의해두면 반복 작업을 피할 수 있다.
  • 긴 프로그램을 기능별로 나눠 여러 함수로 나눠 작성하면 모듈화로 전체 코드의 가독성이 좋아진다.
  • 기능별(함수별)로 수정이 가능하므로 유지보수가 쉽다.

 

익명 함수

함수 앞에 이름이 붙어있지않으면 익명 함수라고 한다.

함수 앞에 이름이 붙어있지않다. (익명 함수)

 

선언적 함수

이름이 있는 함수를 선언적 함수라고 한다.

함수 앞에 이름이 붙어있다.(선언적 함수)

익명 함수와 큰 차이는 없지만 함수 앞에 이름이 붙어있다는 점이 다르다.

 

매개변수와 리턴값

함수를 호출할 때는 괄호 내부에 넣는 여러 자료를 매개변수라하며, 함수를 호출해서 최종적으로 나오는 결과를 리턴값이라고 부른다.

 

x에 들어가는 값이 매개변수, console.log로 찍힌 값이 return값이다.

 

 

기본적인 함수 예제

 

윤년인지 확인하는 함수

일반적으로 true or false를 리턴하는 함수는 isㅇㅇㅇ 이라는 이름으로 만드는 편이기에 이름만 보고 불 자료형을 리턴하는지 알 수 있다.

 

A부터 B까지 더하는 함수

 

A부터 B까지 곱하는 함수

 

 

최솟값을 구하는 함수

 

 

최댓값을 구하는 함수

 

 

 

나머지 매개변수

호출할 때 매개변수의 갯수가 고정적이지 않은 함수를 가변 매개변수 함수라고 부르며, 자바스크립트에서 이러한 함수를 구현할 때는

나머지 매개변수라는 특이한 형태의 문법을 사용한다.

 

 

나머지 매개변수를 사용한 최솟값을 구하는 함수

 

 

나머지 매개변수와 일반 매개변수를 갖는 함수

a,b가 먼저 들아가고 나머지는 배열로 들어가는 모습을 확인할 수 있다.

 

매개변수의 자료형에 따라 다르게 작동하는 min() 함수

 

전개 연산자

전개 연산자를 사용하면 숫자 하나하나가 들어오지만, 전개 연산자를 사용하지않으면 배열이 매개변수로 들어온다.

 

기본 매개변수

 

기본 매개변수를 추가한 윤년 함수

 

 

구 버전 자바스크립트

구버전의 자바스크립트에서 가변 매개변수 함수를 구현할 때는 배열 내부에서 사용할 수 있는 특수한 변수인 arguments를 활용한다.

 

 

젼개 연산자는 최신 버전의 자바스크립트에서 추가된 기능이며, 구 버전의 자바스크립트에선 apply() 함수를 사용할 수 있다.

 

 

기본 매개변수는 최근 자바스크립트에 추가된 기능이며, 구 버전의 자바스크립트에서는 일반적으로 다음과 같은 코드를 사용했다.

 

wage 값이 없으면 typeof(wage)가 undefined로 뜨며 != undefined에서 false값이 뜨니 8590이 들어간다. 시간도 같다.

 

매개변수로 들어오는 값이 false, false로 변환되는 값이 아니라는게 확실해지면 위와 같이 짧은 조건문을 사용해서 구현 할 수 있다.

 

확인 문제

 

1. A부터 B까지 범위를 지정했을 때 범위 안의 숫자를 모두 곱하는 함수를 만들어보세요.

 

2 . 다음 과정에 따라 최댓값을 찾는 max() 함수를 만들어보세요.

  • 매개변수로 max([1, 2, 3, 4])와 같은 배열을 받는 max() 함수를 만들어보세요.

 

 

  • 매개변수로 max(1, 2, 3, 4)와 같이 숫자를 받는 max() 함수를 만들어보세요.

 

 

  • max([1, 2, 3, 4]) 형태와 max(1, 2, 3, 4) 형태를 모두 입력할 수 있는 max() 함수를 만들어보세요.

 

'TIL' 카테고리의 다른 글

10일차 프로그래밍 기초  (0) 2022.11.18
5일차 JavaScript 챕터 5 - 함수 고급  (0) 2022.11.12
3일차 JavaScript 챕터 4  (0) 2022.11.10
2일차 JavaScript 챕터 3  (1) 2022.11.08
1일차 JavaScript 챕터 2  (0) 2022.11.07