본문 바로가기

공부/TIL

배열의 고차함수

배열의 고차함수

for each, reduce, map, filter

2주차까지 문법,용어(동작원리를 익힘)

함수는 객체이다 -> 인자나 반환값으로 전달할 수 있다

고차함수 (함수형 프로그래밍에 대한내용)

함수를 인자로 받거나, 함수를 리턴하거나 - 쓰는 이유 : 전달하는 함수에 도움을 받아 함수의 동작을 바꿈

-기능을 쪼개면 쪼갤수록 변할부분이 작아진다. (유지보수에 용이) 빨리 고칠 수 있고, 고쳤을때 영향이 덜간다

-외부상태가 안변했음 좋겠다.. 노력하자 (외부 상태에 의존성이없다) 동일한 인수를 주면 동일한 반환값을 준다.(순수함수를 추구한다)

-외부상태에 의존하면 인수가 바뀌면 반환값도 바뀐다

프레임워크마다 지향하는 패러다임 - 리액트(기본적으로 객체지향- 함수형을 원함) 앵귤러(기본적으로 객체지향 - 리액티브 프로그래밍이라는 새로운것을 원함)

함수형에서 중요한것은 클로저 객체지향에서는 클로저가 그렇게 중요하지 않는다

렉시컬스코프에 참조되고 있기때문에 가비지컬렉터에 대상이되지 않는다(클로저)

자바스크립트는 정렬을할떄, 숫자를 문자로 바꿔서 정렬을함

  • 배열정렬할때

배열.sort(function (a, b) { return a - b; }); 오름차순

배열.sort(function (a, b) { return b - a; });내림차순

a[key] > b[key] ? 1 : (a[key] < b[key] ? -1 : 0); 숫자일수도있고, 문자열일수도 있을때

배열에 객체가 담겨있고, 기준점이 숫자일 수도, 문자일수도 있을떄

앞으로 for금지

3개의 인수를 전달해주면서 호출

요소값, 요소값의 인덱스, this

for each는 리턴값이 undefined, for문은 리턴값이 없다

처음부터 끝까지 계속돈다 break걸면 에러 사실 배열을 만들었다는 것은, 끝까지 다돌아야 한다

for문의 문제 변수가 있지, break쓸수 있지 return는 함수에서만 사용할 수 있다

for-each문을 쓴순간 나갈려는 생각을 멈춰라

for-each문에서는 bind를 쓰지않아도 된다(원래는 일반함수 호출이라 전역을 읽어와서 써줘야됨)

뭐할때 쓸까?

Map -this의 개수와 똑같은 리턴을 만들고 싶을때 쓴다 (새로운배열 반환값 1:1) 원본 배열을 초과하거나 적어지지 않음 -반환값 결과값이 담긴 새로운배열 [요소의 일치개수가 같음] -반드시 리턴해야됨 리턴없으면 빈배열 리턴

빈배열 ex) [undefined, undefinex]

filter - 줄어든다 this배열이 10개이면, 10개''이하' - 원본배열 수정x -if문 대체가능

리턴문이 평가되는 게 아니고 '리턴문에 부합하는 아이들이 리턴됨'

reduce -1개

값을 두개가지고 놈

함수형 프로그래밍의 목표: 변수를 적게 사용(에러발생확률 높음), for문 if문을 비롯한 제어문적게사용하기

some -> 반환값 true false (조건에 맞는거 하나라도 있으면)

every 모두

find 객체가 들어감 (요소를 리턴함) 배열xx 객체가 리턴됨 원시값이 리턴됨 '첫번째 값만' 리턴됨

find index 조건에 부합하는 인덱스를 리턴

정규표현식

문자열을 다룰때 쓴다 ctrl + f

화살표 함수 (this가 따로돔) 함수가 한줄이 되길 기대함 ,콜백으로 사용되길 기대함

함수가 정의될때 상위 스코프를 승계받음 (렉시컬 this) -딱 정해짐

화살표함수의 this를 apply / bind 할 수 없다.

화살표함수는 consturctor가 없다 (내부메소드 2개 ) [[call]] , [[constructor]]

파라미터 기본값

argument객체 (유사배열 객체) -length가 반드시 있다 - es6 rest 파라미터

0:x

1:0

화살표함수에는 this랑 argument가 constructor 등이 없다

... (연산자와 파라미터)

파라미터 ... (rest 파라미터)

연산자 ...

...배열(배열을 푼다) spread연산자

spread는 이터러블(배열,유사배열)

반응형

'공부 > TIL' 카테고리의 다른 글

todo 버전1  (0) 2019.05.27
DOM  (0) 2019.05.23
프로토타입  (0) 2019.05.18
number, math, string 객체  (0) 2019.05.17
0516  (0) 2019.05.16