//함수 표현식let add = function( x, y) {
return x + y;
};
console.log(add(2, 5));
호출할 수 없다. 이유는 함수 선언문으로 정의한 함수와 함수 표현식으로 정의한 함수의 생성 시점이 다르기 때문이다.
함수 선언문으로 정의한 함수는 런타임 이전 자바스크립트 엔진에 의해 먼저 실행된다. 그리되면 JS엔진은 함수 이름과
동일한 이름의 식별자를 암묵적으로 함수 객체를 할당한다.
이 것을 함수 호이스팅이라고 한다. 그러나 변수 호이스팅과는 개념이 다르다
var의 경우 호이스팅에 의해 undefined로 평가되지만 함수 선언문으로 정의된 함수는 선언문 이전에 호출하면
ES6에서 도입된 화살표 함수는 function 키워드를 대신하여 =>를 사용해 좀 더 간략한 방법으로 함수를 선언할 수 있다.⭐️화살표 함수는 항상 익명 함수로 정의한다.
const add = (x, y)=> x + y;
console.log(add(2, 5));//값 : 7
프로토타입의 property도 없으며 arguments 객체를 생성하지 않는다.
이상적인 함수는 한 가지 일만 해야 하며 가급적 작게 만들어야 한다.
최대 3개 이상 넘지 않을 것을 권하며 그 이상의 매개변수가 필요한 경우, 하나의 매개변수를 선언하고 객체를 인수로
전달하는 것이 유리하다.
그러가 객체 타입 인수는 참조 값이 복사되어 매개변수로 전달되기 때문에 함수 몸체에서 객체를 변경할 경우 원본이 훼손된다.
함수 정의와 동시에 즉시 호출되는 함수로써 단 한 번만 호출되며 다시 호출은 불가하다.
(function () {
let a = 3;
let b = 5;
return a + b;
}());
//익명함수를 사용하는 것이 일반적.
재귀 함수는 반복되는 처리를 위해 사용된다.
//반복문 없이 10부터 0까지 출력하는 함수를 재귀를 써서 구현했을때.function countDown(n) {
if( n < 0) return;
console.log(n);
countDown(n - 1);
}
countDown(10);
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 칭한다.