일반 함수, 생성자 함수, 재귀 함수

·2024년 6월 7일

자바스크립트

목록 보기
5/21

복습

forEach 는 리턴값이 없다
reduce arr.reduce(function(acc,cur){return acc+cur},0) -> 리듀스는 코드를 간단하게 만든다.
arguments.__proto__ = Array.prototype 태생 배열로 바꾸기
배열로 내보내는 건 중요하다. -> 리액틑에서는 화면을 렌더링할 때 배열을 인식해서
안쪽 함수가 바깥쪽에 대한 변수에 대한 접근이 혀용되는 거 : 클로저
즉시실행함수를 쓰는 이유 -> 캡슐화를 위해. ( 전역의 오염을 막고 지역 변수로만 쓰겠다!) 쉽게 접근 못 하도록. => 요즘엔 잘 안 씀. => 모듈 프로그래밍을 하니까~~ (파일 분리!) export import

일반 함수 vs 생성자 함수

화살표 함수에서 {} 의 역할은 return의 유무. {} 이 없으면 return 내장이고 {} 있으면 retrun 을 써줘야된다.
ㄴ arguments 객체가 존재하지 않는다. (일반 함수에서는 존재했는데!) -> 대체되는 항목이 있다. (...args)=>{} '나머지 파라미터' 배열이다.
> 유사배열을 배열로 바꿔 배열의 메서드를 쓰는 방법 많이 쓴다! \<
⭐️ (중요!) 매개변수에 ... 이 들어가면 나머지 파라미터 / 함수 안에서 ... 일어나면 전개 구문 ⭐️

함수의 역할 - 1. 호출실행으로 값주기 2. 생성자
함수 쓸 때 생성자 함수로만 쓰려면 앞글자 대문자로. 호출할 때는 new 붙임 -> 객체 생성!

---> 근데 이거 그냥 생성자 함수 일반 함수를 구분해버리면 안 되나? 의 해답 : 일반 함수는 프로토타입이 있고 애로우 함수는 프로토타입이 없다. (컨스트럭터!) 그래서 애로우 함수 안에서는 this 불가 참조 안됨.
---> 생성자 함수 -> class 가 됐다.

일반 함수 : arrow function 권장
생성자 함수 : class 권장

().함수 로 불러지는 게 아니라면 함수는 윈도우 객체이다.
업로드중..

-> this 가 상위에서 가져오면 되니까 -> arrow function 쓰자.

오.. 코드 줄이기...

반복 for문 -> 화살표 함수 -> reduce 순으로 변환

객체의 메서드를 써야 한다 >> 일반 함수, concise ( this! arrow 쓰면 window 가져옴 )
메서드 안에 함수 써야 한다 >> arrow function ( this 가 상위에 있는 걸 가져와서)

재귀함수

식에 함수가 있으면 함수 먼저 계산한다!!

아~ 실행 컨텍스트 생각하면 되겄네

오! 반복문 공부할 때 쓰면 좋을 기능!

재귀함수 만들면 실행 컨텍스트가 많이 쌓여서 성능면에서는 안 좋은 것 같은데 왜 쓰는가? -> 가독성 때문에
함수는 객체다! 그래서 속성 만들어줄 수 있다.


this 와 map이 만났을 때

map 이 호출하는 콜백함수는 this가 그 배열에 바인딩되지 않는다. 맵을 호출한 배열의 맥락을 이해하지 못 하는 것이다.

  • map() 메서드는 배열의 각 요소에 대해 콜백 함수를 호출하지만, 콜백 함수의 this를 자동으로 배열과 연결하지 않눈다.
  • 콜백 함수는 기본적으로 독립적으로 실행되며, this는 전역 객체를 가리키거나 undefined로 바인딩된다. (여기서 StrictMode 면 undefined UnstritMode면 window 가 바인딩)
  • this를 올바르게 ageTest로 바인딩하려면, 화살표 함수 또는 bind()를 사용해야 합니다.
profile
'한 번 더!'의 가능성을 믿어! 오늘도 열심히 굴러가 보는 프론트엔드 개발자 😎

0개의 댓글