아코디언 1/6 강좌 클로져 관련 질문입니다.
안녕하세요 선생님 고급강의 잘보고 있습니다.
잘만들어 주셔서 감사합니다.
아코디언 만들기 1/6 을 보다가 궁금한 사항이 있어 질문드립니다.
const toggleItem = (id: string) => () => {
setCurrent((prev) => (prev === id ? null : id))
}
아코디언 1/6 강의를 듣다가 가운데 () 가 클로져 라고 하셨는데
가운데에 저렇게 () 를 쓰면 클로져가 되는건가요?
( 제가 프론트엔드 개발자가 아니라서 클로져의 장단점을 몰라서 질문을 드리는것 같습니다. )
chatgpt 에게 질문을 남겼는데 더욱 이해가 안되어서 질문드렸습니다..ㅎㅎ
아래는 gpt의 답변 입니다.
여기서 (id: string) => () => {...}는 두 개의 함수를 연속적으로 정의하고 있습니다.
1.외부 함수: (id: string) => {...} 이 함수는 id라는 문자열을 매개변수로 받습니다.
내부에는 또 다른 함수를 반환하고 있습니다.
2. 내부 함수: () => {...} 외부 함수가 반환하는 내부 함수입니다.
외부 함수의 id 매개변수를 사용하여 동작을 수행합니다.
回答 1
3
이 자리에서 클로저의 정의를 자세히 설명해 드리는건 수업의 범위에서 많이 벗어납니다.
하여, 여기서는 질문하신 내용에 대한 최소한의 이해를 돕는 정도로만 소개드려 보도록 하겠습니다.
MDN에서는 클로저를 다음과 같이 소개하고 있습니다.

이 중 '외부함수'와 '내부함수'의 관계를 클로저라고 하며, 흔히 외부함수에서 선언된 변수나 인자를 내부함수가 참조하는 경우를 일컫습니다.
예로, 다음 함수 originalFunc는
const originalFunc = (id: string) => () => { console.log(id) }풀어쓰면 다음과 같습니다.
const orginalFunc = (id: string) => {
return () => {
console.log(id)
}
}위 코드는 다음과 동작상에 차이가 없습니다.
const orginalFunc = (id: string) => {
const innerFunc = () => {
console.log(id)
}
return innerFunc
}이 상태에서 보면, 내부함수인 innerFunc에서 originalFunc의 인자 id를 참조하고 있습니다.
이는 클로저 현상을 활용한 대표적인 사례에 해당합니다.
이후 어디선가 originalFunc('abc')를 실행하면 함수 자체가 반환될 뿐이지만,
이 반환된 함수를 변수 a에 담아 다시 호출하면 ( a() ) 그 결과로 abc가 반환될 것입니다.
이보다 자세한 내용은 자바스크립트 이론서나 이론강의 등을 통해 학습하시기 바랍니다.
강의 난이도에대해서
0
104
1
강의자료 관련 질문
0
64
2
게시판 리스트 만들때 어디부터 use client를 적용할 지 모르겠어요
0
135
1
강의 연장관련
0
174
2
Tooltip-useSyncExternalStore()에 함수 넘기는 방식에 대해...
0
222
3
textarea 에서 body 무한깜빡현성 질문 드립니다.
0
132
2
닫힌 상태에서 문자열은 찾아지는데 열리진 않아요
0
146
2
scrollSpy 바닐라버전에서 data-index를 찾는 코드 질문
0
128
2
[#보일러플레이트 코드 사용법 문의] 강의자료[보일러플레이트] 사용법에 대해서 문의 드려요
0
318
2
무한스크롤 리액트버전 | 16분 31초
0
176
2
강의자료 github link 404 빈페이지
0
263
2
아코디언 (3/6) css transition 추가 부분 max-height 질문
1
417
2
강의 정리에 대한 블로그 정리 글 게시 문의
0
301
1
[아코디언 1/6 챕터] 클로저 활용 질문 있습니다.
2
444
2
item7 style이 강의자료에 없습니다.
0
291
1
이벤트 핸들러가 Root에 모이면
0
304
1
append와 insertAdjacentElement 차이가 무엇일까요?
0
324
1
gnb 만들기를 실무 next js 프로젝트에서 사용할수 있나요?
1
614
2
학습자료 관련해서 질문있습니다.
0
550
1
무한스크롤 강의 관련 질문입니다.
0
311
1
반응형 TextBox 질문입니다.
0
478
1
Tooltip의 useStyleInView 훅 질문입니다.
0
253
1
이벤트에 대한 타입을 지정할 때 궁금한 점이 있습니다.
0
313
1
gnb 를 이렇게 수정해 봤어여
0
640
1

