updatePassage(
    	story,
    	relinkedPassage,
    	{text: newText},
    	options
    )(dispatch, getState);

    Twine의 근본적인 기능까지 수정을 하려고 코드를 읽어보던 중 위와 같은 구조의 코드를 발견했다.

    처음에는 도대체 어떻게 작동하는가 싶어서 한참을 고민하고 찾아보다가 알게 되었다.

     

    return (dispatch, getState) => {
    		// Do the passage update itself
    }

    위에 일부 발췌한 코드에서 알 수 있다시피 updatePassage 함수는 return값이 함수이다.

    함수를 실행한 결과를 반환하는 것이 아니라 함수 그 자체를 반환한다.

     

    https://ffoorreeuunn.tistory.com/149

     

    [ JavaScript ] 자바스크립트 함수 지향 | 메소드와 함수 차이 | 함수 리턴값 | 함수 배열

    해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다. 값으로서의 함수 - 함수와 메소드의 차이 JavaScript에서는 함수도 객체입니다. 다시

    ffoorreeuunn.tistory.com

    위 블로그의 글이 이해하기 쉬웠는데, 내가 이해한 방식으로 요약하자면

    JS에서 함수란, JS코드를 담고 있는 string변수와 유사하며, 이 때문에 '값'이 들어갈 수 있는 매개변수나 반환값에

    함수코드, 혹은 함수코드를 담고 있는 함수명이 올 수 있다는 것이었다.

     

    updatePassage(
    	story,
    	relinkedPassage,
    	{text: newText},
    	options
    )(dispatch, getState);

    따라서 위와 같은 코드의 경우, updatePassage가 반환하는 함수에, (dispatch, getState)라는 인자를 넣어주는 코드라는 뜻으로 이해했다. 

     

    개인적으로는 JS컴파일러가 함수명+() 가 오면 함수의 기능을 수행하도록 설계된 방식이 너무 솔직하게? 작동하는 것 같아서 당황스러웠다.

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기