JavaScript는 함수를 다양한 방법으로 사용한다. 함수는 일급 객체(first-class)이며 유효범위(scope)를 제공한다. 변수에 할당할 수 있으며 다른 함수의 인자로 전달할 수 있고 다른 함수의 반환 값이 될 수도 있다.
함수 표현식 (function expression)
let plus = function(x, y){ // 함수의 이름이 정의되지 않았다 return x + y; } console.log(plus(2, 3)); // 5함수를 변수에 할당했다. 함수의 이름이 정의되지 않았기에 익명 함수(nonymous function), 무명 함수 표현식(unnamed function expressioin)이라고도 불린다.
기명 함수 표현식(named function expression)
// 기명 함수 표현식 let plus = function plus(x, y){ return x + y; } console.log(plus(2, 3)); // 5기명 함수 표현식은 함수 표현식에서 이름을 정의한 함수를 말한다. 위 코드에서 함수의 이름을 생략해도 함수의 호출에는 영향을 미치지 않으나 함수 객체의 name property가 빈 문자열이 된다. 만약 우리가 name property를 활용할것이 아니라면 함수의 이름을 생략하여도 괜찮을 것이다.
함수 선언문(function declaration)
function plus(x, y){ return x + y; } console.log(plus(2, 3)); // 5변수를 선언하듯 함수를 선언한 코드이다. BROWSER가 JavaScript를 해석할 때 함수 선언문으로 작성된 코드는 그 위치와 관계없이 맨 위로 끌어 올려지는데 이를 호이스팅이라고 한다.