함수
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)
함수 호출 방법
함수의이름()
일반적인 방법이다.
call함수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는 인자를 배열 안의 요소로 담아 넘겨준다.
필요와 용도에 따라 사용하면 될 것 같다.