Language/JavaScript
다양한 함수의 형태 정리
언젠간코딩잘함
2023. 3. 5. 02:08
즉시실행함수
함수 정의와 동시에 즉시 호출되는 함수
즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다
let funcNow = (function() {
let a = 3;
let b = 5;
return a * b;
})(a, b);
즉시 실행 함수 내에 코드를 모아 두면 혹시 있을 수도 있는 변수나 함수 이름의 충돌을 방지할 수 있다
재귀 함수
함수가 잦기 자신을 호출하는 것을 재귀 호출이라 한다. 재귀 함수는 자기 자신을 호출하는 행위, 즉 재귀 호출을 수행하는 함수를 말한다. 재귀 함수를 사용하면 반복문 없이 반복되는 처리를 구현할 수 있다.
예를 들어 팩토리얼은 재귀 함수로 간단히 구현할 수 있다.
function factorial(n) {
if (n <= 1) return 1; // 탈출 조건
return n * factorial(n - 1); // 재귀 호출
}
fcatorial 함수 내부에서 자신을 호출할 때 사용한 식별자 factorial은 함수 이름이다. 함수 이름은 함수 몸체 내부에서만 유효하고 물론 함수를 가리키는 식별자로도 자기 자신을 재귀 호출할 수 있다. 단 함수 외부에서 함수를 호출할 때는 반드시 함수를 가리키는 식별자로 해야 한다.
콜백 함수
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백 함수라고 한다.
콜백 함수는 비동기 처리 (이벤트처리, Ajax 통신, 타이머 함수 등)에 활용되는 중요한 패턴이다.
// 콜백 함수를 사용한 이벤트 처리 (myButton을 클릭하면 함수를 실행)
document.getElementById('myButton').addEventListener('click' function () {
console.log('button clicked!');
});
// 콜백 함수를 사용한 비동기 처리 (1초 후에 메시지를 출력)
setTimeout(function () {
console.log('1초 경과');
}, 1000);
콜백 함수는 비동기 처리뿐 아니라 배열 고차 함수에도 사용된다. JavaScript에서 배열은 사용 빈도가 매우 높은 자료구조이고 배열을 다룰 때 배열 고차 함수는 매우 중요하다. (배열 고차 함수에 대한 글은 따로 정리할 것이다)
// 콜백 함수를 사용하는 고차 함수 map
var res = [1, 2, 3].map(function (item) {return item * 2;});
// ~ filter
res = [1, 2, 3].filter(function (item) {return item % 2;});
// ~ reduce
res = [1, 2, 3].reduce(function (acc, cur) {return acc + cur;}, 0);
콜백 함수와 배열 고차 함수는 정확히 모르는것 같다. 정확히 이해를 한 뒤에 정리하고 블로깅 하는 시간을 갖도록 할 것이다.