일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것
매개변수(parameter) : 함수 내부로 입력을 전달받는 변수
인수(argument) : 입력 / 반환값(return value) : 출력
함수 정의 : 함수는 함수 정의를 통해 생성하고 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을
명시적으로 지시를 함수 호출 이라한다.
// 1. 함수 선언문
// 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성(JS 엔진)
function add(x,y){
return x + y;
}// 2. 함수 표현식
const add = function(x,y) {
return x + y;
}함수 선언문으로 정의한 함수와 함수 표현식으로 정의한 함수의 생성 시점이 다르기 때문
모든 선언문이 그렇듯 함수 선언문도 런타임 이전 JS 엔진에 의해 먼저 실행
표현식은 코드가 한 줄씩 순차적으로 실행되는 시점인 런타임 때 생성
함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 JS 고유의 특징을 함수 호이스팅이라 한다
// 함수 참조
console.dir(add);
console.dir(sub);
// 함수 호출
console.log(add(2,5)); // 7
console.log(sub(5,2)); // TypeError: sub is not function
// 함수 선언문
function add(x,y) {
return x + y;
}
const sub = function (x,y) {
return x - y;
};
// 3. Function 생성자 함수
const add = new Function('x', 'y', 'return x+y');// 4. 화살표 함수(ES6)
const add = (x,y) => x+y;순수 함수 : 어떤 외부 상태에 의존하지도 않고 변경하지도 않는 즉 부수 효과가 없는 함수
비순수 함수 : 순수 함수의 반대
함수형 프로그래밍 : 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성을 지향하는 프로그래밍 패러다임이다.