글 작성자: 망고좋아
반응형

🎯 함수는 일급 객체(first-class-object)이다.

  • 일급 객체란, 다른 변수처럼 대상을 다룰 수 있는 것을 말한다.
  • 자바스크립트에서 함수는 일급 객체이다.
  • 즉, 자바스크립트에서 함수는 변수처럼 다룰 수 있다.
function add(a, b) {
    return a + b;
}

// 함수를 다른 함수의 인자로 넘긴다.
[1, 2, 3].reduce(add, 0);

(() => {
    console.log('익명 함수를 생성한다.');
})();

function outer(a) {
    function inner(b) {
        return a + b;
    } // 중첩 함수를 생성한다.
    return inner(10)
}
const Persom = (name) => {
    // 함수를 변수로 생성한다.
    const printName = () => console.log(name);
    return { printName }
} // 함수를 리턴하면 closure를 생성한다.

const person = Person('Daniel');
person.printName();

function printName(name) {
    console.log('name : ', name);
}

// 함수끼리 비교한다.
// ===의 경우, 변수가 같은 객체(함수)를 가리키는지 체크한다.
console.log(printName === person.printName);

 

🏷 요약

  • 함수를 다른 함수의 인자로 넘기면, 다른 함수 내부에서 그 함수를 호출할 수 있다.
    • 함수를 인자로 받아 자유롭게 활용할 수 있습니다. 인자로 받은 함수는 또한 다른 함수를 인자로 받을 수 있다.
  • 함수 안에 함수를 만들면, 그 함수는 외부에서 사용될 수 없다.
    • 함수 안에 함수를 선언했을 때 그 함수를 외부에서 쓰고 싶다면, 그 함수를 리턴하여 사용할 수 있다.
  • 함수의 실행이 끝나도 내부 변수를 유지할 수 있다.
    • 함수 안에서 closure가 만들어지면, 내부 변수가 메모리에 남아 closure에 활용된다.
반응형