함수
-
자바스크립트 고차함수 - filter()프론트엔드/JavaScript 2020. 10. 3. 09:08
filter 메서드란? filter메서드란 해당 메서드를 호출한 배열에서 특정 조건을 제외한 나머지로 새 배열을 만든다. Map 메서드는 원래 있던 배열을 그대로 복사하거나 요소들의 값만 살짝 바꿔서 새 배열을 만든다. 하지만 filter 메서드는 if문을 쓰는 것과 같다. 복사 대상이 되는 배열에서 조건에 맞는 요소만 추려서 새로운 배열을 만드는 것이다. 코드를 보면 다음과 같다. 위에서 보면 알겠지만 return을 할 때 조건을 정해주면 해당 조건에 true값을 걸러 그 값으로 새로 배열을 만든다. 즉 조건의 값이 true, 1인 경우 그 값이 새로운 배열의 대상 값이 되는 것이다. filter 메서드 또한 forEach와 Map과 마찬가지로 filter의 인자로 제공되는 함수는 filter 메서드를..
-
자바스크립트 고차함수 - Map()프론트엔드/JavaScript 2020. 10. 3. 07:32
Map 메서드란? for 문을 대신할 수 있는 메서드로 forEach뿐 아니라 Map()도 있다. forEach 메서드는 for를 대체하여 배열을 순회시키며 어떤 동작을 반복하기 쉽게 한다. 반면 Map 메서드는 for문을 대체하여 배열을 순회시키며 새로운 배열을 만든다. 즉 특정 배열을 복사하기 쉽게 만든 것이 Map() 메서드다. 기존 for문을 이용한 배열 복사는 위 코드와 같다. 배열을 별도로 선언하고 내용을 복사해주는 식이다. forEach를 써도 배열을 따로 선언하고 복사해야해서 번거롭다. Map 메서드를 쓰면 for문이나 forEach 메서드보다 편하게 배열을 복사할 수 있다. Map 메서드는 인자로 받는 함수의 인자로 Map메서드를 호출한 배열의 요소, 인덱스, 배열 그 자체를 전달받을 수..
-
자바스크립트 고차함수 - forEach()프론트엔드/JavaScript 2020. 10. 3. 05:03
forEach() 메서드란? for 문을 대체할 수 있는 메서드이다. 배열을 순회하며 배열의 각 요소에 대하여 인자로 주어진 콜백 함수를 실행한다. 이때 반환값은 undefined다. 콜백 함수의 매개변수를 통해 배열의 요소 값, 인덱스값, forEach를 호출한 배열 그 자체를 전달받을 수 있다. 간단하게 사용법을 보면 다음과 같다. 일반적인 for문을 사용하면 위와 같다. forEach를 써주면 위와 같다. forEach 메서드는 함수를 인자로 받으며 배열을 통해 호출할 수 있다. 그리고 불러낸 함수는 배열의 요소, 인덱스, 배열을 인자로 제공받을 수 있다. forEach 뜯어보기 조금 더 콜백함수를 뜯어보면 다음과 같다. forEach 메서드는 호출한 배열이 가진 요소의 숫자만큼 실행된다. 그 과정..
-
자바스크립트 고차함수 - Sort(), reverse()프론트엔드/JavaScript 2020. 10. 3. 02:56
sort(), reverse()의 문제점 자바스크립트에서는 배열을 정렬하는 Sort()라는 메서드가 있다. 이 메서드를 이용하면 위 코드처럼 유니코드에 의거해서 배열의 요소들을 오름차순에 따라 정렬한다. 내림 차순으로 정렬하고 싶을 땐 reverse() 메서드를 사용하면된다. 그런데 뭔가 좀 이상하다. 숫자 배열의 경우 해당 숫자를 숫자로서 비교하는 것이 아니다. 유니코드로 변환하여 문자열처럼 비교하므로 결과가 이상하게 나온다. 배열이 문자열일때는 괜찮은데, 숫자 배열의 경우 단순 sort(), reverse()로는 정렬에 오류가 난다. 고차함수를 활용한 sort 활용법 이럴 때는 고차함수를 활용하여 sort 메서드의 정렬 기준을 다시 설정해주면 된다. 우선 코드를 보자. 위 코드를 보면 sort() 메..
-
고차함수(Higher-Order Function)에 대해서프론트엔드/JavaScript 2020. 9. 22. 00:15
함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍은 자료의 처리를 함수의 계산으로서 취급하는 프로그래밍의 한 형태다. 기존의 프로그래밍이 직접 손으로 짜거나 불완전한 구조였다면 함수 프로그래밍은 함수를 적극 활용하여 외부 입력에 따라 결과가 달라지거나 하는 등을 지양하는 프로그래밍이다. 이때 사용되어야 하는 함수는 함수의 결과가 프로그램의 상태를 바꾸지 않고 함수의 결과값은 오로지 함수에게 주어진 입력된 인수에만 의존해야 한다. 또한 결과값은 항상 일정해야 한다. 고차 함수(Higher-Order Function)란? 함수형 프로그래밍을 하다보면 그 중 하나인 고차 함수를 쓰게 된다. 그리고 이 고차 함수의 조건은 다음과 같다. ● 하나 이상의 함수를 인수로 취할 수 있..
-
자바스크립트의 클로저(Closure)프론트엔드/JavaScript 2020. 9. 15. 05:07
클로저(closure)란? 클로저란 함수를 일급객체로 취급하는 함수형 언어(하스켈, 스칼라 등)에서 쓰이는 일종의 테크닉이다. "클로저는 함수와 그 함수가 선언됐을 때 렉시컬 환경과의 조합이다"라는 유명한 말이 있다. 그런데 해당 내용으론 이해하기가 힘들고, 중첩된 함수에서 외부 함수는 이미 종료됐지만, 외부 함수에 있는 내부 함수는 그대로 살아있는 상황을 말한다. 이해하기 쉬우면 코드를 보면 더 편하다. 위 코드는 외부 함수에서 반환값으로 내부 함수를 반환하거나, 외부 함수에서 내부 함수를 호출해준 경우다. 이때 잘 보면 내부함수 inner()를 호출했는데 10이 출력됐다. 근데 잘 생각해보면 좀 이상하다. 왜냐면 외부 함수는 내부 함수를 리턴하면서 종료됐다. 근데 내부 함수는 이때 외부 함수가 가진 ..
-
자바 스크립트의 객체(Object)프론트엔드/JavaScript 2020. 9. 11. 06:57
자바 스크립트의 객체(Object)란? 보통 자바(java)를 생각하면 객체는 클래스와 함께 짝지어 다닌다고 생각할 수 있다. 하지만 자바스크립트의 클래스는 최근 도입된 개념이다. 그래서 그 전에는 클래스 없이 객체를 클래스처럼 이용했다. 자바 스크립트 객체는 'key'와 'value'로 이뤄진 프로퍼티(property) 그리고 메서드의 집합이다. 일반적으로 한 개의 변수는 한 개의 값만 저장이 가능하다. 이럴 경우 변수가 가진 데이터를 명확히 알 수 있으나 여러 면에서 불편함이 생긴다. 또한 필요에 따라 변수 한개에도 여러 자료를 담아야할 경우가 생긴다. 그래서 생겨난 것이 객체(Object)다. 아래 예시를 보면 더 쉽게 이해할 수 있다. 객체(Object)의 구성 자바 스크립트 객체는 크게 둘로 나..
-
자바스크립트 함수와 매개변수, 인수프론트엔드/JavaScript 2020. 9. 10. 02:09
매개변수의 타입 자바 스크립트에서 함수를 정의할 때 매개 변수의 타입은 따로 명시하지 않는다. 어차피 변수 자체도 타입을 명시하지 않기 때문에 전달되는 파라미터 값도 데이터를 가려받진 않는다. 다만 그와 별개로 함수에서 처리가 되지 않는 값을 줬을 경우 함수 내부에서 처리가 불가능해서 오류가 난다. 자바 스크립트의 인수(argument) 자바 스크립트에선 매개 변수로 전달되는 인수가 기본 자료형(primitive)일 경우에는 기본 자료형 데이터가 바로 전달되고, 기본 자료형 이외의 객체가 전달될 경우는 객체의 참조값이 전달된다. 추가로 인수의 경우 다른 언어와 달리 원하는 숫자보다 적게 전달되더라도 오류가 나지 않는다. 그저 인수가 배정되지 않는 매개변수는 'undefined'값을 갖게 될 뿐이다. 위와..