
유지보수성/재사용가능/높은가독성
중복되는 내용 있으면 그것을 함수로 만들어서 재사용
함수는 이거 딱 세가지만 기억하면 된다.
function add(a, b) //함수이름(매개변수 인자 parameter) {
return a + b; //결과값 반환
}//여기까지가 함수 정의
const result = add(1, 2); //변수에 값 할당해서
console.log(result); //함수 호출
사용자에게 필요한 정보를 입력 받아서(input) 실행(return)시킨다(output)
function multiply(a, b) //함수이름(매개변수 인자 parameter) {
return a * b; //결과값 반환
}
multiply(1, 2); //함수 호출
정의된 함수를 실행하기 위해서는 꼭 함수 밖에서 호출이 이루어져야함.
//예제1. 함수 호출 방법
function add(a, b) {
console.log('function');
return a + b; //return을 명시적으로 하지 않으면 자동으로 undefined 반환
}
//함수 중간에 return을 써서 함수를 종료할 수도 있음
function print(num) {
if (num < 0) {
return; //return undefined의 약자. if문 조건에 맞지 않으면 함수 종료하라는 뜻
}
console.log(num);
}
const result = add(1, 2);
console.log(result);
//예제2. 중복되는 함수 작성법
function fullName(firstName, lastName) {
return `${firstName} ${lastName}`;
}
let lastName = '김';
let firstName = '지수';
console.log(fullName(firstName, lastName));
let lastName2 = '박';
let firstName2 = '철수';
console.log(fullName(firstName2, lastName2));
좋은 유지보수를 위해
1. 함수단위로 작은 단위의 일들을 묶는다
2. 수행하는 일을 잘 나타낼 수 있는 이름을 짓는다
3. 매개변수의 이름도 의미있게 짓는다
함수의 이름은 함수를 참조하고 있다.
즉, 객체가 가지고 있는 메모리 주소를 참조하고 있다.
매개변수에 아무런 값도 지정하지 않았을 때, 기본값은 무조건 undefined
매개변수의 정보는 함수 내부에서 접근이 가능한 arguments 객체에 저장됨
매개변수 기본값 Default Parameters은 a = 1, b = 2 이런식으로 지정 가능
function add(a = 1, b = 1) {
console.log(a);
console.log(b);
console.log(arguments);
console.log(arguments[1]);
return a + b;
}
add();
Rest 매개변수 : 변수를 배열로 받아오는 방식 변수명 앞에 ... 을 씀
function sum(...numbers) {
console.log(numbers);
}
sum(1, 2, 3, 4, 5, 6, 7);
함수 선언문 function name() {}
함수 표현식 const name = function (){}
let add = functiton (a, b) {
return a + b;
}
console.log(add(1, 2));
화살표 함수 const name = () => {}
let add = (a, b) => {
return a + b;
}
console.log(add(1, 2));
// return 안에서 어떤 동작이 일어나지 않고 값만 출력할 경우 아래와 같이 생략 가능
let add = (a, b) => a + b;
console.log(add(1, 2));
함수도 객체이기 때문에 객체를 다른 변수에 할당 가능
생성자 함수 const object = new Function();
내가 나중에 호출해줄게
일급객체는 모든 연산이 가능
매개변수 반환값 명령문 동일비교 대상
고차함수
인자로 함수를 받거나 함수를 반환하는 함수
const add = (a, b) => a + b;
const mutiply = (a, b) => a * b;
//전달될 action은 콜백함수이다.
//전달될 당시에 함수를 바로 호출해서 반환된 값을 전달하는 것이 아니라
//함수를 가리키고 있는 함수의 레퍼런스(참조값)가 전달된다.
//그래서 함수는 고차함수 안에서 필요한 순간에 호출이 나중에 됨
function calculator(a, b, action) {
let result = action(a, b);
console.log(result);
return result;
}
calculator(1, 2, add);
calculator(1, 2, multiply);