함수는 인수(Argument)를 매개변수(Parameter)로 입력받아 반환값(Return value)를 출력한다.
함수 리터럴: var fun = function func(arg1,arg2) { ... }
함수 선언문: function func(arg1,arg2) { ... }
함수 표현식: 함수 리터럴로 생성한 함수 객체를 변수에 할당하는 방식
함수 호이스팅: 함수 선언문을 런타임 이전에 실행하는 것
함수 리터럴은 변수 호이스팅이 일어나므로, 표현식 선언 이전에는 undefined로 초기화된다.
함수 호이스팅은 함수 호출 이전에 함수 선언이 되어야 한다는 규칙에 위배되므로 함수 선언문 대신 함수 표현식 사용을 권장한다.
const fun = (args) => {...}
매개변수보다 인자가 적으면 전달받지 않은 매개변수는 undefined로 초기화된다.
매개변수보다 인자가 많으면 초과된 인자는 무시된다.
매개변수 기본값을 사용할 수도 있다.
function add(a=0,b=0,c=0) {return a+b+c;}
함수는 한 가지 일만 하도록 해야함.
매개변수는 값의 복사와 같은 방식으로 전달되므로 원시 값은 값에 의한 전달, 객체는 참조에 의한 전달방식으로 동작한다.
즉시실행함수
(function() {. . .}())
형태()
는 그룹연산자로 해석되며 내부의 피연산자가 값으로 해석되므로 내부의 함수가 리터럴로 평가되는 원리이다.콜백함수: 매개변수로 전달받아, 다른 함수의 내부에서 실행되는 함수.
고차함수: 그 때, 전달받은 함수.
순수함수: 외부상태에 의존하지 않는 함수
비순수함수: 외부상태에 의존하는 함수
함수형 프로그래밍