변수에 함수를 할당 할수가 있는데 = 함수 선언식
이런식으로 변수에 직접 함수를 지정하는 것이다.
하지만 이렇게 선언하는 함수는 다른 변수, 호이스팅이 적용되지 않는다는 단점이 있다.
호이스팅 : 선언된 위치에 관계없이 어디서든 함수를 사용할수 있게 한다.
사실 호이스팅인 부분을 제외하면 함수 선언식, 표현식의 차이는 없다고 볼수가 있다.
다른함수의 인자로 전달되는 함수 - 콜백 함수
함수를 리턴하는 함수 - 커리함수
이 두개를 합쳐서 고차 함수 라고 한다.
- 이런 로직을 조합하여 커리함수 + 콜백함수를 합쳐서 사용할수도 있다.
forEach, find, filter, map, reduce, sort, some, every
실제로 저렇게 작동하지는 않는다.
걸러내는 기준이 되는 특정 조건을 filter메소드의 인자로 전달이 되며 이떄 전달되는 조건은 함수의 형태이다.
filter메소드에 전달되는 인자=매개변수는 함수의 형태를 띈다고 설명을 하였고
적용되는 배열의 index를 하나하나 확인을 하여 true라면 return 하고 false라며 return하지 않는다.
filterExample는 들어오는 값이 짝수이면 true, 홀수이면 false를 반환하는 함수이다.
이 함수를 활용하여 filter에 인자로 넣어주게 되면
arr의 index값 [1,2,3,4]를 자동으로 하나하나 검색을 하고 true면 통과 false면 통과시키지 않는다.
1%2 = x
2%2 = 0
3%2 = x
4%2 = 0
이렇게 되어서 짝수인 2,4가 return 되는 것이다.
용어를 수정하겠다. index는 배열의 value위치를 말한다.
-> 예시로든 arr을 보면 1의 위치는 1 index, 2는 2 index로 말한다. 그러기 값을 말하는 표현은 value로 정정
JAVA에서 forEach문과 똑같다.
차이점이 있다면 filter는 forEach처럼 모든 배열을 확인하지만 find메서드는 함수에 맞는 value값을 찾으면 그 즉시 실행을 중지한다.
마지막에 0은 누적값의 초기값을 지정해 주는 값이다.
return해서 반환되는 값은 누적값에 쌓이게 된다.
코드만 봐도 알수가 있다.
기본적으로 정렬의 역할을 하는것은 똑같지만 맨 앞자리 수만을 비교하여 정렬을 실행한다.
이를 수정하기 위해서는 함수를 이용하여 값을 비교하는 작업이 필요하다.
- 이런 점을 보면 JS는 정말 단순하고 멍청한 언어 같기도 하지만 너무 편리하다는 장점도 있는거 같다.
나도 정확하게는 어떻게 작동이 이루어 지는지는 모르겠다..
java같은 경우에는 for문을 돌리게 되면 로직이 어떻게 구현이 되는지 알수가 있는데 js는 이런 부분에서 좀 안타깝다.
every는 &&와 비슷하고
some는 || 와 동일하다.
some는 로직에서 false가 나와도 하나라도 true라면 true를 반환하지만
every는 모두 true가 아닌이상은 false를 반환한다.
====================================================================
- 고차 함수 부분은 코플릿을 풀면서 실제로 연습을 하는게 도움이 될꺼같다.
- 기본 적인 개념은 여기까지가 끝이며 이것을 다양하게 활용을 함으로써 코드의 추상화를 이룰수가 있다.
이번에 BEB 2기 합격해서 예습중인데 엄청 도움되네요 감사합니다 잘보고있어요