함수는 객체다!
함수는 객체지만 일반 객체와 다르다.
일반 객체는 호출할 수 없지만 함수는 호출할 수 있다.
함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출한다.
var add = function foo(x,y){
return x+y;
}
console.log(add(2,5)); // 7
console.log(foo(2,5)); // ReferenceError: foo is not defined
함수는 일급객체(값의 성질을 갖는 객체)다.
함수 선언문은 “표현식이 아닌 문”
함수 표현식은 “표현식인 문 “
용어정리 : 매개변수, 인수
function add(x,y){ // x,y 매개변수
return x+y;
}
add(3,5) // 3,5 인수
콜백 함수 : 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수
고차 함수 : 매개 변수를 통해 삼수의 외부에서 콜백 함수를 전달받은 함수
함수형 프로그래밍에서는
순수 함수 : 어떤 외부 상태에 의존하지도 않고 변경하지도 않는, 즉 부수효과가 없는 함수
비순수 함수 : 부수 효과가 있는 함수
함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성을 지향하는 프로그래밍 패러다임이다.