함수(Function)이란 어떤 작업을 수행하기 위해 필요한 문(statement)들의 집합을 정의한 코드 블록.
Javascript에서 함수는 다른 객체처럼 속성 및 메서드를 가질 수 있기에 일급객체이다.
따라서 다른 객체와 함수를 구별하는 것은 함수는 호출될 수 있고 필요에 따라 호출하여 해당 작업을 반복수행가능하다.
▶ 함수몸체 : 함수는 블록('{ }')으로 감싸져있으며, 그 안에는 실행되는 문으로 채워져 있다.
▶ 함수명(함수이름)
▶ 매개변수 : 함수의 작업 실행을 위해 추가적인 정보가 필요할 경우, 매개변수를 지정한다. 매개변수는 함수 내에거 변수와 동일하게 동작한다
▶ return : 함수는 인수를 통해 들어온 값을 함수몸체에 있는 실행되는 문에 의해 최종적으로 어떠한 결과 값을 반환할 수 있다. return문을 통해 반환되는 값을 return value라 한다
일반적으로 프로그래밍 언어 함수 선언과 비슷한 형식
▶ 문법
// 문법
function 함수명() {
구현 로직
}
// 예시
function funcDeclarations() {
return 'A function declaration';
}
funcDeclarations(); // 'A function declaration'
함수의 일급객체 특성을 이용하여 함수 리터널 방식으로 함수를 정의하고 변수에 할당할 수 있는데 이러한 방식을 함수 표현식(Function expression)이라 한다
▶ 문법
// 문법
var 함수명 = function () {
구현 로직
}
// 예시
var funcExpression = function () {
return 'A function expression';
}
funcExpression(); // 'A function expression'
함수안에 있는 선언들을 먼저 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말함.
자바스크립트는 Parser가 함수 실행 전 해당 함수를 전체적으로 한번 흝는다.
함수안에 존재하는 변수/함수 선언에 대한 정보를 메모리에 저장하고 기억해 두었다가 호출했을 시 실행시킨다
▶ 소스예제
//#예제 1 : 함수선언에서의 호이스팅
foo();
function foo() {
console.log('hello');
};
> hello
//#예제 2 : 함수표현에서의 호이스팅
foo();
var foo = function() {
console.log('hello');
};
> Syntax Error
▶ Parameter : 함수를 정의하는 코드에서 괄호안에 정의하고 있는 변수 (=매개변수)
▶ Arguments : 함수를 호출하는 곳에서 함수에 전달하는 값(=인자)
function add(x,y) { // add라는 명의 함수, x, y의 parameter
var total = x + y;
retrun total;
}
console.log(10, 20) // argument(인자) 10, 20