first class object
다른 객체들이랑 똑같이 적용할 수 있음 (매개변수로 전달 가능, return문으로 출력)
변수에 함수를 할당
const sayHello = function (){
console.log('hello');
}
우측 부분이 함수, 좌측 부분이 변수의 선언부
함수를 어디서나 호출할 수 있다.
sayHello라는 이름을 가지고 함수를 어디서나 호출 할 수 있다
호출할 수 있을 뿐만 아니라 함수를 마치 객체럼 변수처럼 넣을 수도 있고
매개변수처럼 보낼 수도 있음
함수가 마치 값으로, 나중에 사용될 수 있도록
함수를 인자로 다른 함수에 전달할 수가 있다.
콜백함수 : 매개변수로써 쓰이는 함수 (고차함수의 한 종류)
고차함수 : 함수를 인자로 받거나 return 하는 함수
함수를 반환할 수 있다.
function createAdder (num) {
return function (x) {
return x +num;
};
}
const addFive = createAdder(5);
console.log(addFive(10));
이건 즉
const addFive = function (x) {
return x + 5;
};
console.log(addFive(10));
이렇게 되는 거임
예시) 스트링, 넘버, 불리언, 함수까지 넣어보기
const person = {
name: 'John',
age: 31,
isMarried: true,
sayHello: function () {
console.log('Hello, my name is ' + this.name)
}
}
person.sayHello(); //Hello, my name is John
예시) 백틱 사용하기
const person = {
name: 'John',
age: 31,
isMarried: true,
sayHello: function () {
console.log(`Hello, my name is ${this.name}`);
}
}
person.sayHello(); //Hello, my name is John
예시) 화살표 함수 사용하기
const person = {
name: 'John',
age: 31,
isMarried: true,
sayHello: () => {
console.log(`Hello, my name is ${this.name}`);
}
}
person.sayHello(); //Hello, my name is undefined
화살표 함수는 undefined로 뜬다
화살푬 함수는 this를 바인딩 하지 않는다.
배열에도 함수 사용 가능
const myArr = [
function(a, b) {
return a + b
}, function (a, b) {
return a - b
}
]
console.log(myArr[0](1, 3)); //4
console.log(myArr[1](10, 7)); //3
하 큰일이다 이해가 하나도 안된다..