자료구조/알고리즘 (JavaScript ver.) 8일차

saebom_·2022년 3월 12일
0

🧸 재귀함수

  • 컴퓨터는 이 재귀함수가 몇번 호출됐는지 stack에 기록함

  • Maximum call stack size exceeded = 스택오버플로우

  • 탈출코드
    이것들에 대한 제동장치 = 반복문과 비슷 (테스트 구문, 업데이트 구문)
    그래서 재귀함수는 반복문으로 변환할 수 있음

  • return으로 종료되고 나오는 상태에서 출력했기 때문에 1 2 3

  • console.log(num)이 재귀함수 앞줄에 쓰여지면 3 2 1

🧸 콜백함수

  • 매개변수로 함수자체도 넘길 수 있음
    이 때 넘기는 함수를 콜백함수, 이 콜백함수를 실행하는 함수를 고차함수라 한다

Q. 그럼 굳이 왜 콜백함수를 매개변수로 넘길까?
A. 콜백함수를 통해서 수행할 함수를 다이나믹하게 변경할 수 있기 때문!

  • call by value = 값에 대한 복사

    • b에 a를 넣어줄 때 값에 대한 복사가 일어남
    • b를 가지고 놀아도 실제 a값에는 영향을 안 미침
    • 각각 다른 영역이라 b가 업데이트 되어도 a는 영향을 안 받음
  • call by reference

    • a가 객체인 경우 (객체라는 또 다른 메모리를 가지고 있음, a에는 객체를 가리키는 주소가 담겨있는데) 이 주소값이 복사되서 b에 넣어주게 됨 ->그럼 b를 건드렸을 때 a도 변경됨
  • 매개변수로 전달하는 주체가 원시타입인지, 객체타입인지 이해하기

🧸 함수저장



  • 함수 선언식으로 만들어진 함수도 변수에 넣어서 사용가능(주소값 복사해서 사용가능)
  • add_1과 add_2는 서로 다른 메모리 주소에 함수를 만들어놨기 때문에 false
  • add_1과 add_4는 메모리주소를 그대로 복사했기 때문에 서로 주소값이 같기때문에 true

    그럼 함수 자체도 요소로서 저장이 되겠네? 혹은 객체의 속성으로 저장이 되겠구나 알 수 있음
    -> 객체, 배열 안에 저장가능

🧸 Method

  • 데이터들을 핸들링 할 수 있는 연관된 함수가 들어감
  • this
    • 객체에서 함수에 대한 접근은 됐지만 함수내에서 객체에 대한 접근을 가능하기 하는 지시자
    • this를 쓰면 자기사진과 동일한 메모리영역에 있는 애를 참조하게 됨
    • obj.name = this.name

0개의 댓글

관련 채용 정보