함수 : 일련의 과정을 문(Statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의
함수리터럴 : function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체
함수 선언문
: 함수 리터럴과 형태 동일, 함수 이름 생략 불가
함수 표현식
- 자바스크립트의 함수는 일급 객체(함수를 값처럼 자유롭게 사용 가능)
- 함수 리터럴로 생성한 함수 객체를 변수에 할당 가능 / 변수 호이스팅 발생
Function 생성자 함수
- 빌트인 함수인 Function 생성자 함수에 매개변수 목록과 함수 몸체를 문자열로 전달하면서 new 연산자와 함께 호출하면 함수 객체를 생성하여 반환
- 생성자 함수 : 객체를 생성하는 함수
화살표 함수 (ES6) : function 키워드 대신 화살표 => 를 사용하여 간략히 표현
함수 정의 방식 | 예시 |
---|---|
함수 선언문 | function add(x,y) {return x+y} |
함수 표현식 | var add function(x,y) {return x+y} |
Function 생성자 함수 | var add = new function('x','y', 'return x+y'}; |
화살표 함수 (ES6) | var add =(x,y) => (x,y) |
호이스팅 개념
1) 매개변수와 인수 : 함수를 실행하기 위해 필요한 값을 함수 외부에서 함수 내부로 전달할 필요가 있는 경우 매개변수(인자)를 통해 인수를 전달.
2) 인수 확인
3) 매개변수의 최대 개수
4) 반환문
객체, 매개변수 -> 참조에 의한 전달 방식
1) 즉시 실행 함수 : 함수 정의와 동시에 즉시 실행되는 함수, 익명 함수가 일반적
2) 재귀 함수 : 재귀 호출을 실행하는 함수, 탈출 조건 필수
3) 중첩 함수 : 함수 내부에 정의된 함수, 중첩함수를 포함하는 함수는 외부 함수
4) 콜백 함수 : 함수의 매개 변수를 통해 다른 함수의 내부로 전달되는 함수
- 고차함수 : 매개 변수를 통해 함수의 외부에서 콜백 함수를 전달 받은 함수
5) 순수 함수와 비순수 함수
- 순수 함수 : 부수 효과가 없는 함수, 동일한 인수가 전달되면 언제나 동일한 값 전달
- 비순수 함수 : 외부 상태에 의존하거나 외부 상태를 변경하는 부수 효과가 있는 함수