함수를 생성하는 방법은 크게 3가지다. 각각의 방식에 따라 함수 동작이 미묘하게 차이가 난다.
- 함수 선언문
- 함수 표현식
- Function() 생성자 함수
function add(x,y){
return x + y;
}
함수 리터럴은 크게 4가지로 구분된다.
1. function 키워드 : 자바스크립트 함수 리터럴은 function 키워드로 시작한다.
2. 함수명 : 함수명은 함수 몸체의 내부 코드에서 자신을 재귀적으로 호출하거나 또는 자바스크립트 디버거가 해당함수를 구분하는 식별자로 사용된다. (함수명은 선택사항임)
3. 매개변수 리스트
4. 함수 몸체 : 실제 함수가 호출 됐을 때 실행되는 코드 부분.함수 선언문은 반드시 함수명이 정의되어 있어야 한다.
//add() 함수 선언문
function add(x,y){
return x + y;
};
console.log(3,4); // 출력값 7생성된 함수를 변수에 할당하여 함수를 생성하는 법
//add() 함수 표현식
var add = function(x,y){
return x + y;
};
var plus = add;
console.log(add(3,4)); // 출력값 7
console.log(plus(4,4)); // 출력값 8
※ 변수 add와 plus는 같은 익명함수를 참조한다.이름 없는 함수 : 익명함수
이름 있는 함수 : 기명함수
//기명 함수 표현식의 함수 호출 방법
var add = function sum(x,y){
return x + y;
};
console.log(add(3,4)); // 출력값 7
console.log (sum(3,4)); // 출력값 Uncaught ReferenceError : sum is not defined 에러 발생
※ 함수 표현식에서 사용된 함수 이름이 외부 코드에서 접근 불가능하기 때문에 에러가 발생함.var add = new Function('x','y', 'return x + y');
console.log(add(3,4)); // 출력값 7