자바스크립트에서의 함수

Javascript

함수

함수는 코드의 중복을 억제하고 재사용성을 높이며 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높인다.

함수 리터럴
var f = function add(x,y){
    return x+y;
};

함수도 함수리터럴로 생성할 수 있다. 다른 언어와 다르게 함수는 객체이다라는 점을 이해해야한다. 함수 정의 방식에는 4가지가 있다. 함수 선언문, 함수 표현식, Function 생성자 함수, 화살표 함수가 있다.

함수 선언문
function add(x,y){
    return x+y;
}

함수 선언문은 함수 이름을 생략할 수 없다. 함수 호이스팅에 의해 런타임 이전에 함수 객체로 초기화된다.

함수 표현식

자바스크립트의 함수는 객체 타입의 값이다. 이를 일급 객체라고 한다. 즉 함수를 값처럼 자유롭게 사용할 수 있다.

var add = function (x,y){
    return x+y;
};

함수 호이스팅에 의해 함수 표현식으로 정의한 함수는 반드시 함수 표현식 이후에 참조 또는 호출해야 한다.

화살표 함수

ES6에서 도입된 화살표 함수는 function 키워드 대신에 =>를 사용한다. 항상 익명 함수로 정의한다.

함수 호출

매개변수는 함수 몸체 내부에서만 참조가능하다.

function add(x,y){
    return x+y;
}
console.log(add(2)); // NaN
console.log(add(2,3,4)); // 7

자바스크립트 함수의 매개변수 개수는 체크하지 않기 때문에 주의해서 사용해야 한다. 인수가 부족하여 할당되지 않은 매개변수의 값은 undefined이고, 초과된 인수는 무시된다.

  1. 자바스크립트 함수는 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.
  2. 자바스크립트는 동적 타입 언어로써, 매개변수의 타입을 사전에 지정할 수 없다.

다양한 함수의 형태

즉시 실행 함수
재귀 함수
중첩 함수
콜백 함수