본문 바로가기

Language/JavaScript

[effective javascript] 고차 함수에 익숙해 지자.

아래의 글은 Effective JavaScript 책을 기반으로 GitHub에 정리한 내용을 발췌한 자료 입니다.


고차 함수는 다른 함수를 인자로 받거나 그 결과로 함수를 반환하는 함수를 말한다.

인자로 받는 함수(흔히 콜백함수로 불리는데, 고차 함수로 인해 되불려지기(called back) 때문이다.)는 특히 강력하고 표현력 높으며 자바스크립트에서 자주 쓰이는 코딩 관례다.

[3, 1, 4, 1, 5, 9].sort(function(x, y){
    if(x < y){
        return -1;
    }else if(x > y){
        reutrn 1;
    }
    return 0;
}); // 결과 값 : [1, 1, 3, 4, 5, 9]

// [ES5의 지원함수 map]
['Fred', 'Wilma', 'Pebbles'].map(function(name){
    return name.toUpperCase();
});

비슷하거나 중복된 코드를 자주 보게 된다면 고차 함수를 사용한 추상화를 통해서, 코드를 간소화 할 수 있다.

function buildString( n, cb ){
    var result = '';
    for( var i = 0; n > i; ++i){
        result += cb(i);
    }
    return result;
}

var aIndex = 'a'.charCodeAt(0); // 97;
var alphabet = buildString( 26, function(i){ 
    return String.fromCharCode( aIndex + i ); 
});

console.log(alphabet); // 결과 값 : 'abcdefghijklmnopqrstuvwxyz'

var digits = buildString( 10, function(i){ reutrn i; } );

console.log(digits); // 결과 값 : '0123456789'

var random = buildString(8, function(i){
    return String.fromCharCode(Math.floor(Math.random() * 26) + aIndex);
});

console.log(random); // 결과 값 : 'ltvisfijr' // 매번 다른 값 리턴 

기억 할 점

  • 고차 함수는 다른 함수를 인자로 받거나 그 결과로 함수를 반환하는 함수다.
  • 이미 존재하는 라이브러리에 포함된 고차 함수의 사용에 익수해져라.
  • 고차 함수로 대체할 수 있는 공통 코딩 패턴을 찾는 방법을 익혀라.