<목차>
- 일급 객체로서의 함수
- Map과 Set
18. 일급 객체로서의 함수
-
프로그래밍 언어에서 함수를 다른 객체와 동일하게 취급할 수 있는 개념
-
일급 객체로서의 함수는 자바스크립트의 유연성과 표현력 극대화
-
함수형 프로그래밍 패러다임에서 함수를 데이터와 동일하게 취급함
-
불변성, 순수성, 함수조합등의 개념을 쉽게 구현할 수 있음
-
코드의 재사용을 높이고 버그를 줄이고 테스트와 유지보수를 용이하게 만듦
-
3가지 특징
- 변수나 데이터 구조 안에 할당 가능
- 함수를 변수에 할당 할 수 있음
- 함수를 값처럼 다룰 수 있음
- 변수에 저장되는 다른 데이터 타입과 동일하게 함수도 저장 할 수 있음
const greet = function() {
console.log("Hello!");
};
- 함수의 인자로 전달 가능
- 함수를 다른 함수의 인자로 전달 가능
- 콜백 패턴과 같은 고차함수를 구현 할 수 있음
- 비동기 처리나 함수의 조작, 행동의 제어 등 다양한 상황에서 유용하게 사용
function processFunction(func) {
func();
}
processFunction(greet);
- 함수의 반환 값으로 사용 가능
- 다른 함수를 반환 할 수 있음
- 함수의 생성을 동적으로 조정할 수 있음
- 클로저나 부분 적용 같은 고급 함수 기법을 가능하게 함
function multiplier(factor) {
return function(x) {
return x * factor;
};
}
const double = multiplier(2);
console.log(double(5));
Q. 일급 객체로서의 함수가 어떤 의미인지, 왜 중요한지 설명해주세요.
19. Map과 Set
Map
- 객체
- 키와 쌍으로 데이터를 저장하는 자료구조
- 키에는 다양한 타입(객체포함)을 사용할 수 있음 => 객체 리터럴이 제공하지 못하는 유연성 제공
- 요소의 삽입 순서를 기억하고 이 순서대로 반복 작업을 수행
- 데이터를 키와 관련된 값의 쌍으로 관리할 때 유용 ex) 사용자 ID와 사용자 정보를 연결할 때 활용
사용 방법
- 생성과 추가: Map 객체를 생성한 후, set 메소드를 사용하여 키와 값을 추가합니다.
let map = new Map();
map.set('name', 'John');
map.set('age', 30);
- 조회: get 메소드를 사용하여 키에 해당하는 값을 조회합니다.
console.log(map.get('name'));
- 삭제 : delete 메소드를 사용하여 키와 그 값을 삭제합니다.
map.delete('age');
- 크기 확인: size 프로퍼티를 사용하여 요소의 수를 확인합니다.
console.log(map.size);
- 존재 여부 확인: has 메소드를 사용하여 키가 Map에 있는지 확인합니다.
console.log(map.has('name'));
- 전체 삭제: clear 메소드를 사용하여 모든 요소를 삭제합니다.
map.clear();
Set
- 객체
- 중복을 허용하지 않는 값을 모아 놓은 컬렉션
- 각 값이 유일하다.
- 어떤 값이 집합에 이미 존재하는지 쉽게 테스트 할 수 있음
- 값의 삽입 순서도 유지
- 유일한 항목의 목록을 유지할 때 유용 ex) 방문한 웹사이트의 URL을 중복없이 저장하거나, 소셜 네트워크의 친구 목록을 관리할 때 사용
사용방법
- 생성과 추가 : Set 객체를 생성한 후, add 메소드를 사용하여 값을 추가합니다.
let set = new Set();
set.add('apple');
set.add('banana');
- 존재 여부 확인: has 메소드를 사용하여 값이 Set에 있는지 확인합니다.
console.log(set.has('apple'));
- 삭제: delete 메소드를 사용하여 값을 삭제합니다.
set.delete('banana');
- 크기 확인: size 프로퍼티를 사용하여 요소의 수를 확인합니다.
console.log(set.size);
- 전체 삭제: clear 메소드를 사용하여 모든 요소를 삭제합니다.
set.clear();
Q. Map과 Set에 대한 개념과 각각에 대한 활용하는 방법을 설명해주세요.Map과 Set에 대한 개념과 각각에 대한 활용하는 방법을 설명해주세요.