다른 함수(콜백 함수 callback function)를 인자로 받음
함수형 프로그래밍 - 변수 사용 없이 순회 작업들을 코딩
for문의 좋은 대체제
단점 : 예외를 던지지 않으면 종료할 수 없음 - break, continue 사용 불가 > for of로 사용해야함
인자들:
콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg - this 주제 섹션에서 다룰 것
즉 고차함수라고 불리는 함수들은 인자로 다른 함수를 받는다.
for each 함수는 실행만 할 뿐 반환되지 않는다.
아래 처럼 사용할 수 있다.
인자들: 콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg
활용법 ( 사진 순으로 점점 간단한 방법)
콜백함수로에 인자로 넣었을 때 true를 반환하는
콜백함수에 인자로 넣은
인자들: 콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg
filter 함수를 이해하기전에,,, true, false 개념부터 다시
우선 i => i % 2 의미는 화살표 함수에서 i % 2 의 결과는 i 를 2로 나눈 나머지를 의미한다. i가 짝수일 때 0 인것이다. 여기서 0은 Falsy 값이므로 filter 함수에서 제외된다. 이게 중요하다.
그래서 arr.filter(i => i%2); 요게 홀수만 나오는 것이다.
Falsy 값:
다음 값들은 모두 false로 평가된다.
false
0
"" (빈 문자열)
null
undefined
NaN (Not a Number)
주어진 콜백함수에 따라 값들을 접어 나감
인자들: 콜백함수 - 인자: ( 이전값, 현재값, 현재 인덱스, 해당 배열 )
초기화 값
초기화 값이 없을 때는 첫 번째와 두 번째 값부터
초기화 값이 있을 때 인덱스가 0부터 시작한다.
활용 예
만약 위 기능을 배열 메서드와 체이닝 없이 짰다면?
중간 과정을 저장하기 위한 변수 또는 내용이 바뀌는 참조형 데이터들이 사용되었을 것
함수형 프로그래밍 - 변수들을 코드에서 감추어 부수효과로 인한 문제 방지
지금 당장 이해가 잘 안되도 끝까지 하자,,,
배열 자체의 순서를 바꿈 - 원본 수정
해당 배열을 반환
인자들: 콜백함수(필수 아님) - 인자: ( 앞의 값, 뒤의 값 )
인자가 없을 경우
숫자를 문자열로 암묵적 변환하여 오름차순 정렬
⭐️ 정확한 정렬을 위해 - 콜백 함수 사용
두 인자 a와 b : 인접한 두 요소
0보다 큰 값 반환 : b를 앞으로 - 순서 뒤집음
0 반환: 순서 유지 - ECMAScript 표준은 아니므로 환경마다 다를 수 있음
0보다 작은 값 반환 : a를 앞으로 - 사실상 순서 유지