Files
vanilla-router/content/함수

함수

Javascript에서 함수는 유연성이 높다.

목차

익명 함수

function() {
  return '익명 함수입니다';
}

이름이 없는 함수를 익명함수라 한다.
이름이 없기에 기존의 함수 호출 방법으로는 익명함수를 호출 할 수 없다.

getId();

와 같이 이름으로 호출 할 수 없다.


Javascript에서 함수는 으로 인식된다.

즉, a = 10 처럼 a라는 변수에 10이라는 값을 담듯이 변수 안에 함수를 담을 수 있다는 것이다.

이를 통해 익명함수를 호출할 수 있다.

const testFunc = function() {
    return '익명함수를 호출합니다';
}

testFunc라는 변수안에 익명함수를 호출합니다 라는 문자열을 반환하는 함수가 담긴다.

testFunc();

이와 같이 익명함수를 호출 할 수 있다.


즉시실행함수

또 한가지 방법으로 즉시실행함수 가 있다.

(function(a) {
    return a * 2;
})(2) 
// 4 

코드의 형태를 보면 함수의 선언문을 괄호로 감싼 뒤 바로 호출해주는 모습이다. 함수를 선언함과 동시에 실행한다고 보면 된다.

익명함수만 즉시실행함수로 정의가 가능한 것은 아니다. 즉시실행함수로 비익명(기명)함수도 실행가능하다.

(function multiply(a) {
    return a * 2;
})(2) 

함수 호출 방법

  1. 함수의이름()

일반적인 방법이다.

  1. call 함수
  2. apply 함수

call함수와 apply함수는 사용법은 거의 같으나 함수 호출에 필요한 인자를 넘겨주는 방식에 차이가 있다.

function concat(a, b) {
    return `${a} ${b}`;
}

concat.call(null, 'Hello', 'world!');
concat.apply(null, ['Hello', 'world!'])

5번, 6번라인의 코드 모두 Hello world! 라는 같은 결과를 반환한다. 다만, call은 함수 호출에 필요한 인자를 쭉- 나열하는 방식이지만 apply는 인자를 배열 안의 요소로 담아 넘겨준다.

필요와 용도에 따라 사용하면 될 것 같다.