일급 객체
// 함수의 자료형
function addNumbers (a, b) { return a + b; }
console.log(typeof addNumbers);
일급 객체의 특성
할당될 수 있음인자로 전달될 수 있음반환될 수 있음할당
function isOddNum (number) {
console.log(
(number % 2 ? '홀' : '짝')
+ '수입니다.'
);
return number % 2 ? true : false;
};
const checkIfOdd = isOddNum; // isOddNum이라는 함수를 checkIfOdd라는 상수로 할당시킴.

console.log()로 숫자를 입력하여 결과 출력
객체와 배열의 값으로도 할당 가능
let person = { // person이라는 변수에 각각의 프로퍼티를 선언한다.
name: '홍길동',
age: 30,
married: true,
introduce: function (formal) {
return formal
? '안녕하십니까. 손영훈 대리라고 합니다.' //true
: '안녕하세요, 손영훈이라고 해요.'; // false
}
};
let arithmetics = [
(a, b) => a + b,
(a, b) => a - b,
(a, b) => a * b,
(a, b) => a / b
];
for (arm of arithmetics) { //변수 arithmetics의 배열을 for of문으로 arm의 이름으로 받아 실행하게됨.
console.log(arm(5, 3));
}

ES6부터 method의 정의가 달라졌다.인자로 전달
고차 함수콜백 함수let list = [1, 2, 3, 4, 5];
function doInArray (array, func) { // (인자, 함수)
for (item of array) {
func(item); //
}
}
// console.log - console이란 객체에서 log란 키에 할당된 함수
doInArray(list, console.log);
doInArray : 고차함수console.log : 콜백함수