리액트

파라미터 함수전달과 함수호출의 차이

두캔두잇 2024. 12. 11. 16:08

하나의 함수에는 여러 인자들을 받을 수 있다. 그중에서도 인자에 함수를 전달 할 수도 있는데
평소 습관적으로 인자에 함수를 전달을 할 때에는, 그 함수가 가지고 있는 인자들도 전달하려는 곳에서 같이 전달하였는데
이것은 함수를 전달하는것이 아닌 그 함수를 호출한 값을 전달하는 거였다. 말보다는 아래의 예시를 통해 이해하는것이 좋을 것 같다

예시

    function sum(a,b) {
        return a + b;
    } // a와 b를 더한 값을 return하는 sum 함수

이렇게 a+b의 값을 반환하는 sum함수가 있고

    function test(param) {
        console.log(param);
    }

test의 함수에서는 param 이라는 인자를 받고있다. 여기에서 test함수를 호출할 때에 sum이라는 함수를 전달하고싶다라면

    test(sum); // Function:sum 함수자체를 인자로 전달

위에 처럼 이렇게 되는 것이고 sum의 반환하는 값을 test함수의 인자로 전달하고싶다면

    test(sum(1,2)); // sum 함수의 a = 1 , b = 2의 값을 전달해 sum은 3을 리턴하는 함수가 된다.

이렇게 전달하게 된다면 test함수는 3을 반환하게 될 것이다.

결과론적으로 본다면 인자를 어떻게 전달할 것이냐에 따라서 설계방향이 달라질 수 있겠다.

직접 함수를 전달한다면 재사용성을 높일 수 있고 상황에 따라 비동기처리도 할 수 있을 것 같고

함수를 호출하여 값만 전달한다면 직관적이며 그 어떤 특정한 값을 필요로 할 때 사용 할 수 있겠다.

  • 결론은 각 프로젝트에 설계방향에 맞게 효율적으로 잘 써야할 것 같고 함수자체를 전달하는것과 호출한 값을 전달하는거에 따라 로직이 바뀔 수 있겠구나 라고 생각하게 되었다.

'리액트' 카테고리의 다른 글

Reduce Method  (1) 2024.12.13
Boolean  (0) 2024.12.13
Async / await  (0) 2024.12.10
Promise에 대해  (1) 2024.12.09
Math.min / max  (0) 2024.12.08