본문 바로가기

JavaScript

JavaScript #3 함수의 이해, 일급,평가,일급함수와 고차함수

함수의 이해

1.함수

- 입력을 받고 반환하는 것 -> 코드의 집합
* 사용이유 : 코드의 재사용을 고려할 때 -> 불필요한 코드를 제거할 수 있음

(1) 선언함수

const add1(a, b) {
    log(a + b) //a와 b를 받아 콘솔로그에 a+b를 적어줌
}
add1(3,7) //이를 함수를 호출한다고 한다.

*이렇게 함수는 만드는(?) 것을 함수를 선언한다고 한다.

(2)익명함수
*선언함수와는 달리 이름이 없다.

function (a, b) {
   log(a+b)
} 
//선언 불가능 but 변수를 생성해 안에 함수를 넣어주면 됨

const add2 = function (a, b) {
   log(a+b)
}

(3)함수의 return

function add3(a, b){
  return a+b //함수가 멈춤
  log(1) //return에서 멈췄기 때문에 실행되지 않음
}

*함수의 활용*

const a = add3(3, 5)
log(a)

log(add3(3,5)) //위와 같은 코드임

+함수의 결과는 값으로 다룰 수 있음

const a = add(3,5) + add3(3,7)
log(a)

const b = add3(add3(2,5),add3(7,8))
log(b)

(4)Arrow function <ES6>

function 의 단점일 수 있는 가독성을 보완함

const add5 = (a,b) => {
   return a + b
}

const add5 = (a,b) => a + b //실행식이 한 줄일 경우에는 중괄호를 사용하지 않아도 됨

2. 일급, 평가, 일급함수와 고차함수

1. 평가

-코드가 계산되어 값을 만듦

const a = (a,b) => a+b
a(3,5) //8이라는 데이터로 만듦

2.일급

-일급의 특징-

*값으로 다룰 수 있는 것

*변수에 담을 수 있는 것 

*함수의 인자로 사용이 가능한 것

*함수의 결과로 사용이 가능한 것

const a = 10 //값으로 다룰 수 있음
			 //변수에 담을 수 있음
const abc = (a) => a + 10 //인자로 사용 가능
const def = abc(a) //인자로 사용 가능 2

3.일급함수

const b = (b) => b+5
const a = b(5)
log(a) //결과 10
//값으로도 사용 가능하고 함수의 인자로도 사용이 가능함

3.고차함수 별 다섯개

const f3 = (f) => f(1) //함수를 받아서 매개변수에 1을 넣어줌
const f4 = (a) => a + 2

log(f3(f4)) //f4에 매개변수 1이 들어간 값이 나옴

//결과 = 3

*callback 함수와 연관되어있음! 완벽히 이해할 것