Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JWT
- css
- java
- Spring
- node.js
- GraphQL
- Deep Dive
- dfs
- nestjs
- 인접행렬
- Linux
- 알고리즘
- 탐욕법
- LifeCycle
- 코딩테스트
- typescript
- OOP
- puppeteer
- 인접리스트
- 자료구조
- 프로그래머스
- bean
- html
- TIL
- winston
- Interceptor
- MySQL
- Kubernetes
- javascript
- REST API
Archives
- Today
- Total
처음부터 차근차근
일급 객체로서의 함수 본문
728x90
JS에서 함수는 일급 객체(First-Class Object)라고 한다.
- 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
=> 함수를 매우 유연하게 사용할 수 있다.
1) 변수에 함수를 할당
함수가 마치 값으로 취급된다.
나중에 사용될 수 있도록 조치가 되었다.
const sayHello = function() {
console.log('Hello!');
};
sayHello(); // "Hello!" 출력
2) 함수를 인자로 다른 함수에 전달할 수 있다.
// 2-1 callback 함수 : 매개변수로써 쓰이는 함수
// 2-2 고차 함수 : 함수를 인자로 받거나 return하는 함수
function callFunction(func) {
// 매개변수로 받은 변수가 사실, 함수다.
func();
};
// 콜백 함수로 사용되는 함수
const sayHello = function() {
console.log('Hello!');
};
callFunction(sayHello); // "Hello!" 출력
3) 함수를 반환할 수 있다.
함수는 값으로 취급되기 때문에, 다른 함수에서 반환할 수 있습니다.
// 3. 함수를 반환할 수 있다.
function createAdder(num) {
return function(x) {
return x + num;
}
}
const addFive = createAdder(5);
// => const addFive = function (x){
// return x + 5;
// }
console.log(addFive(10)); // 15 출력
4) 객체의 프로퍼티로 함수를 할당
// 4. 객체의 프로퍼티로 함수를 할당
const person = {
name: 'John',
age : 31,
isMarried : true,
sayHello1: function() {
console.log(`Hello, my name is ${this.name}`);
},
sayHello2 : () => { // 이 경우는 undefined로 나온다. 주의! (화살표함수는 this를 바인딩 하지 않는다!)
console.log(`Hello, my name is ${this.name}`);
}
};
person.sayHello1(); // "Hello, my name is John" 출력
5) 배열의 요소로 함수를 할당
// 5. 배열의 요소로 함수를 할당
const myArray = [
function(a, b) {
return a + b;
},
function(a, b) {
return a - b;
}
];
console.log(myArray[0](5, 10)); // 15 출력
console.log(myArray[1](10, 5)); // 5 출력
'Language > JavaScript' 카테고리의 다른 글
[코어 자바스크립트] JavaScript 데이터 타입(심화) (0) | 2023.05.28 |
---|---|
Map과 Set (0) | 2023.05.25 |
ES6 문법 (1) | 2023.05.25 |
배열, 배열 메소드 (1) | 2023.05.24 |
객체 메소드 (0) | 2023.05.24 |