1. 자바스크립트의 함수
- typeof 연산자로 함수의 타입을 확인해보면 function이 리턴된다.
- 그러나 자바스크립트의 함수는 엄연히 따지면 객체이다.
- 자바스크립트의 함수는 선언 자체로도 값으로 평가될 수 있다. (변수에 함수 선언을 할당하는 함수 표현식 가능)
- 변수나 다른 데이터 구조 안에 할당할 수 있고, 다른 함수의 파라미터로 전달될 수 있다. 다른 함수의 리턴값이 될 수도 있다.
- 이러한 조건을 모두 만족하는 함수를 일급 함수(First-Class-function)이라고 부른다.
2. 값으로서의 함수 예제
// 함수 표현식으로 함수 만들기
const sayCodeit = function() {
console.log('Codeit');
};
sayCodeit();
// 객체 프로퍼티로 함수를 선언해서 메소드 만들기
const codeit = {
title: 'codeit',
printTitle: function () {
console.log('Codeit');
},
};
codeit.printTitle();
// 배열의 요소로 만들기
const codeit = [
function () {
console.log('Codeit');
},
];
codeit[0]();
- 모두 콘솔에 Codeit 이라는 문자열이 출력된다.
function getFunction() {
return function() {
console.log('Codeit');
}
}
const printCodeit = getFunction;
printCodeit();
- getFunction 은 새로운 함수를 리턴하는 고차 함수이다.
- 위 코드에서는 printCodeit이라는 변수에 getFunction을 그대로 할당했다. 결국 printCodeit은 getFunction과 똑같이 동작한다.
- printCodeit의 호출 결과는 콘솔에 Codeit이라는 문자열을 출력하는 것이 아니라, 콘솔에 'Codeit'이라는 문자열을 출력하는 함수를 리턴하게 되는 것이다.
- 당연히 콘솔에는 아무것도 출력되지 않는다.
'~2023.02 > JS' 카테고리의 다른 글
자바스크립트 동작원리 (0) | 2022.06.02 |
---|---|
자바스크립트에서 this와 Arrow Function (0) | 2022.06.02 |
AND와 OR 연산 방식 (0) | 2022.06.01 |
스타일 다루기 (0) | 2022.06.01 |
HTML 속성 다루기 예제 (0) | 2022.06.01 |