가문비나무 위의 독수리 2024. 7. 1. 22:48

공부하면서 비록 컴퓨터에 관한 공부지만 아날로그식으로 손글씨를 자주 씁니다. 

그래서 좀.. 내용이 두서없을거예요

그냥 제 기억을 위해 정리한 내용이라..

 

1. callback함수

일단 이 함수 자체를 이해하는거가 너무 힘들었습니다. 굳이 왜 써야하는지 그리고 왜 파라미터에 왜!! 함수가 들어가서 날 그리도 힘들게 하는건지.. 그래서 gpt한테 물어봤어요. 대체 왜 쓰냐고...

 

그러니 아래와 같이 알려주더라구요

 

callback 함수를 인자로 사용하는 이유는 주로 다음과 같습니다:

  1. 비동기 작업 처리: JavaScript에서 비동기 작업을 처리할 , 특정 작업이 완료된 후에 실행할 코드를 지정할 있습니다. 예를 들어, 서버로부터 데이터를 가져오는 동안 기다릴 필요 없이 다른 작업을 계속 진행할 있습니다.
  2. 코드의 재사용성: 특정 작업을 수행한 여러 다른 작업을 실행해야 , 공통된 코드를 반복하지 않고 callback 함수를 사용하여 다양한 기능을 구현할 있습니다.
  3. 유연한 코드 구조: 함수의 동작을 외부에서 정의된 논리에 따라 동적으로 변경할 있어서 유연한 코드 구조를 만들 있습니다.

인자로 함수를 받아버리니까 기다릴 필요없이 비동기적으로 움직을 수 있고, 또, 말 그대로 인자로 받아올 수 있으니 어느 곳이서든 private이 아닌 이상 코드를 재 사용할 수 있습니다.

  아하.. 이론상으로는 무슨 말인지 좀 알거 같아요.. 근데 제가 직접 사용해보려면.. 시간이 더 오래 걸릴거 같네요..

 

2. 클로저

-> 자신이 선언된 당시의 환경을 기억하는 함수

음.. 그러니까 상태를 유지해주는 거.. 마치 useState처럼...

그래서 생명주기가 끝난 외부 함수의 변수에 접근할 수 있는 내부 함수..

말이 참 어렵죠..? 그니까 가비지 콜렉터에 안들어가서 계속적으로 함수를 사용할 수 있다는 말 같아요.

그래서 이를 사용하면 변수를 공유할 수 있고, 정보를 은닉할 수 있다고 합니다.

음.. 무슨 말 하고 싶은지 이것도 좀 아리까리하게 이해가 갔어요

그래서 왜 사용하는데..? 그냥 편하게 전역변수 사용하면 안됨?이라는 생각을 했습니다.

그래서 클로저를 대신 사용하는 이유는 전역변수를 사용하면 무분별하게 상태가 바뀌기 때문에 위험합니다.

그래서 클로저를 사용해서 이를 관리해줘야해요

그럼 클로저는 어떻게,.. 죽여요..?

값에 null을 할당하면 죽습니다..

 

3. 일급 객체

왜 이런 이름이 있는건진 모르겠는데

일급객체가 되기 위해서는 3개의 조건이 있습니다. 

1. 변수에 담을 수 있어야합니다. 

2. 매개변수에 넘길 수 있어야합니다.

3. 함수에서 반환할 수 있어야합니다.

 

말 참 어렵네요..

나름 며칠 공부했는데..

정리하니 이정도 밖에 없네요..

다른 것들도 공부하긴 했는데, 정리할 만한 내용들은 이거밖에 없는거 같아서

오늘은 이정도면 하겠습니다.