안녕하세요! 💛 자스핑 스터디 1주차 💛 아티클 작성하러 온 물결웹팟 OB 박채연입니다 😋
대망의 자스핑구리.. 첫주차에 무슨 내용을 공부하면 좋을까 고민을 하다가
매번 자바스크립트 공부를 할 때마다 나오는 개념이지만, 누군가 질문하면 명쾌하게 답을 내리지 못했던
'일급 객체'에 대해 확실히 공부하면 좋겠단 생각이 들었습니다!
그래서 가져온 일급객체 깨부시기!
바로 공부하러 가볼까요 ~ 😊
🏷️ 일급 객체란?
다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 말합니다.
보통 함수에 인자로 넘기거나 변수에 대입하는 것들이 가능할 때, 일급 객체라 한다고 하네요.
일급 객체의 조건을 더 상세히 보자면,
1️⃣ 무명의 리터럴로 생성할 수 있다.
2️⃣ 변수나 자료구조(객체, 배열)에 할당할 수 있다.
3️⃣ 함수의 매개변수에 전달할 수 있다.
4️⃣ 함수의 반환값으로 사용될 수 있다.
즉, 함수를 데이터 다루듯 사용할 수 있다는 거죠!
자바스크립트 함수는 위의 조건들을 만족하기 때문에 일급 객체가 된다고 합니다.
🏷️ 일급 함수란?
함수를 일급 객체로 취급하는 것을 일급 함수라 합니다!
함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미인데요,
객체는 값이므로, 결국 함수를 값과 동일하게 취급할 수 있다는 이야깁니다!
즉, 함수라는 대상이 값으로서 사용될 수 있다고 생각하면 되는거죠.
그럼, 함수가 일급객체라 할 수 있는 것은 무엇이 있을까요?
1️⃣ 고차 함수를 만들 수 있다.
2️⃣ 콜백을 사용할 수 있다.
그럼 이번엔 고차 함수와 콜백 함수에 대해 또 알아볼까요!
🏷️ 콜백 함수
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 말합니다.
이런 콜백 함수는, 비동기 처리와 배열 고차 함수에서 사용됩니다.
🏷️ 고차 함수
매개변수를 통해 함수의 외부에서 콜백함수를 전달받거나, 함수를 리턴하는 형식의 함수를 말합니다.
고차함수는 매개변수를 통해 전달받은 콜백함수의 호출 시점을 결정해서 호출하는 역할을 하는데요,
즉, 콜백함수는 고차 함수에 의해 호출되고, 필요에 따라 고차 함수에서 콜백 함수에 인수를 전달할 수 있습니다.
고차함수에는 여러 함수들이 반복적으로 가지고 있는 기능을 정의해두고,
나머지 디테일한 기능은 인자로 넣는 콜백함수를 통해 정의하는 형식으로 구현하면
더 추상화가 높은 코드를 짤 수 있겠죠?
어떤 경우를 고차함수라고 하는지 더 자세한 예시를 살펴봅시다!
1️⃣ 다른 함수를 인자로 받는 경우
2️⃣ 함수를 리턴하는 경우
3️⃣ 함수를 인자로 받고, 함수를 리턴하는 경우
1️⃣ 다른 함수를 인자로 받는 경우
function double(num) {
return num * 2;
}
function doubleNum(func, num) {
return func(num);
}
//doubleNum은 고차함수
doubleNum(double, 5);
//double은 doubleNum의 콜백함수
2️⃣ 함수를 리턴하는 경우
function subtractor(subtract) {
return function(num) {
return num - subtract;
}
}
// subtractor는 고차함수 (다른 함수를 리턴)
subtractor(5)(8)
const subtract5 = subtractor(5);
subtract5(8)
// subtractor 함수가 리턴하는 함수를 변수에 저장할 수 있음.
3️⃣ 함수를 인자로 받고, 함수를 리턴하는 경우
function double(num) {
return num * 2;
}
function doubleSubtractor(subtract, func) {
const doubled = func(subtract);
return function(num) {
return num - doubled;
}
}
// doubleSubtractor는 고차함수
doubleSubtractor(5, double)(18)
// double 함수는 doubleSubtractor 함수 콜백으로 전달
우리가 자주 사용하는 배열 메서드도 고차 함수로 이루어진 경우가 많은데요!
forEach, find, filter, map, reduce, sort, some, every 등이 이에 해당한다고 합니다 😋
아무렇지 않게 사용하는 것들이지만, 이렇게 개념 공부를 하면 더 깊게 이해하고 사용할 수 있는 것 같아서
여러모로 자스 공부를 하는 건 많은 도움이 되는 것 같아요 하하
자스핑 스터디 열심히 참여해서 더 머리가 가득 찬 사람이 되어보도록 하겠습니다 *_*
파이팅!
참고한 자료입니다 - !
https://velog.io/@reveloper-1311/%EC%9D%BC%EA%B8%89-%EA%B0%9D%EC%B2%B4First-Class-Object%EB%9E%80
일급 객체(First Class Object)란?
자바스크립트를 공부하다보면 라는 말을 한 번쯤은 들어보았을 것이다. 이번에는 그 가 무엇인지에 대해서 정리해보고자 한다. 일급 객체(1급객체, First Class Object) 일급객체에 대한 정의이다. >
velog.io
[함수] - 고차 함수와 콜백 함수
일급 객체, 고차 함수, 콜백 함수
velog.io
[JavaScript] 고차 함수와 콜백(Callback) - 일급 객체란? - 하나몬
❗️함수는 일급 객체이다. 자바스크립트에는 특별한 대우를 받는 일급 객체가 있다. 대표적인 일급 객체 중 하나가 바로 함수이다. 👉 다음 조건을 만족하는 객체를 일급 객체라고 한다. 무명
hanamon.kr
'자스핑' 카테고리의 다른 글
[week 02] 실행 컨텍스트와 스코프, 호이스팅 (1) | 2024.11.07 |
---|---|
[week 02] 실행컨텍스트, 스코프, 호이스팅 (2) | 2024.11.06 |
[Week 01] Symbol.. 그는.. (0) | 2024.10.30 |
[week 01] javascript의 다양한 함수 선언 방식을 알아보자 (0) | 2024.10.30 |
[Week 01] this 와 bind 를 알아보자 (0) | 2024.10.30 |