유인동 - ⌜함수형 자바스크립트 프로그래밍⌟을 참고해서 작성했습니다.
identity 라는 함수가 책에서 소개되었다. 바로 위 이미지에 나타나있는 함수가 바로 주인공이다. 해당 함수를 이용하면 그저 똑같은 인자로 넘긴 값과 똑같은 결과값이 반환된다. 이를 예상하는 것은 어렵지 않다.
const identity = function(v){return v;}
identity(10);
// 10
하지만 이렇게 쓸모 없어 보이는 함수도 언어의 작동하는 방식을 잘 이해하고 있으면 유용하게 쓸 수 있다.
if(identity(0)) console.log("a");
// 출력 없음
if(identity(NaN)) console.log("b");
// 출력 없음
if(identity({})) console.log("c");
// c
이렇듯 조건식 판별문 안에서 identity 함수를 사용하게 되면 평가가 된다. 0
이나 NaN
같은 값들은 falsy 값으로 false로 평가된다. 그렇다면 이 identity 함수를 고차함수의 인자로 사용하면 falsy 값에 대한 처리를 신박하게 할 수 있다.
falsy 값으로는
0
,-0
,0n
,""
,null
,undefined
,NaN
이 있다.
[0, NaN, false].filter(identity);
// []
[0, NaN, false, true, undefined, 1].filter(identity);
// [true, 1]