함수(function)
특정한 일을 수행하는 코드의 집합 입니다.
사용자에게 필요한 데이터를 입력 받고 → 결과 값을 출력 합니다.
코드를 작성 할 때 같은 일을 반복하는 것이 아니라 함수로 만들어서 필요할 때 마다 재사용 할 수 있습니다.
함수를 잘 사용하게 되면
재사용 가능
유지보수성
가독성 향상
위의 장점들이 있습니다.
잘 사용하기 위해서는
작은 단위로 함수를 만들고
함수 이름으로 기능을 유추 할 만큼 잘 나타내자
전달받는 매개변수의 이름도 마찬가지
함수 문법
function add(a, b) {
return a + b;
}
add(2, 2); // 함수 호출
function
은 함수 정의 키워드add
는 함수 이름a,b
는 매개변수 또는 인자(parameter)return
키워드를 통해 결과 값 반환
함수도 결국 객체 입니다.
함수를 정의하면 Heap
이라는 메모리 공간에 할당이되고 메모리 셀 한 칸이 아니라 다수가 필요합니다.
즉 위의 add
함수는 함수가 담겨있는 메모리 주소를 가지고 있습니다.
- 다른 변수에 함수를 할당하면 해당 변수는 동일하게 함수가 가리키고 있는 메모리 주소를 참조합니다.
function add(a, b) {
return a + b;
}
const copy = add; // 함수가 가지고 있는 메모리 주소를 변수에 할당
add(2, 2); // 4
copy(2, 2); // 4
return 에 대해서
return
은 함수 내부에서 처리한 특정한 값을 반환하기 위해서 사용 합니다.
- return 을 명시적으로 작성하지 않으면 undefined 처리를 해줍니다.
function add(a, b) {
return a + b;
}
add(2, 2); // 4
-------
function add(a, b) {
a + b;
}
add(2, 2); // undefined
- return 을 함수 중간에 사용하면 함수가 종료 됩니다.
function add(a) {
if (a < 1) {
return;
}
console.log(a);
}
add(2); // undefined
add(0); // 0
매개변수 탐방
- 매개변수의 기본 값은 undefined
function add(a, b) {
console.log(a, b); // 1 undefined
}
add(1);
- 매개변수의 정보는 함수 내부에 접근이 가능한 arguments 객체에 저장
function add(a, b) {
console.log(arguments); // { "0": 1, "1": 2}
console.log(arguments[0]); // 1
}
add(1, 2);
- 매개변수에 기본 값 지정하기
- 외부에서 전달되는 값이 있는 경우, 디폴트 값이 아니라 주어진 값을 사용 합니다.
function add(a, b = 2) {
return a + b; // 3
}
add(1);
-----
function add(a, b = 2) {
return a + b; // 4
}
add(1, 3);
- Rest 매개변수
주어지는 매개변수의 개수를 가늠할 수 없을 때, 모든 매개변수를 배열로 받고 싶은 경우
function add(...numbers) {
console.log(numbers); // [1,2,3,4,5,6]
}
add(1, 2, 3, 4, 5, 6);
-----
function add(a, b, c, ...numbers) {
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
console.log(numbers); // [4,5,6]
}
add(1, 2, 3, 4, 5, 6);
함수를 선언하는 방법들
- 함수 선언문
function name() {}
- 함수 표현식
함수도 객체이므로 변수에 할당 및 재할당 가능
함수의 이름이 없다하며 무명 함수라고도 합니다.
const name = function () {};
화살표 함수
const name = () => {}
---
const add = (a, b) => {
return a + b
}
add(1,2)
---
# 값만 return 하는 경우
const add = (a,b) => a + b;
콜백 함수
자바스크립트에서 함수를 일급 함수로 취급 합니다.
함수가 일반 객체처럼 모든 연산이 가능 합니다. 출처 : MDN
다른 함수들에 인자로 제공되고
다른 함수에 의해 반환될 수 있으며
변수에 값으로서 할당될 수 있습니다.
추가로 고차 함수라는 정의도 있습니다.
인자로 함수를 받거나(콜백함수), 함수를 반환하는 함수를 말합니다.
콜백 함수 예시
const add = (a, b) => a + b;
const minus = (a, b) => a - b;
function calculator(a, b, callback) {
let result = callback(a, b);
return result;
}
calculator(3, 4, add);
calculator(3, 4, minus);
Point ❗️
전달되는 당시에 함수를 바로 호출해서 반환된 값을 전달 하는 것이 아니라
함수를 가르키고 있는 함수의 참조 값을 전달 합니다.
그 후 고차 함수 안에서 필요한 순간에 호출이 됩니다.