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컴파일러가 함수명+() 가 오면 함수의 기능을 수행하도록 설계된 방식이 너무 솔직하게? 작동하는 것 같아서 당황스러웠다.
'텍스트 어드벤처 게임 프로젝트 > Twine 분석(JS, TS)' 카테고리의 다른 글
BrowserRouter VS HashRouter (0) | 2023.08.30 |
---|