[목차]
1. 콜스택 개념 복습
2. 재귀함수 복습
function ingoo () {
console.log(3)
return 4
}
function goak () {
console.log(1)
return ingoo()
}
function hello () {
goak()
console.log(5)
ingoo()
return 10
}
const result = hello()
const answer = goak()
console.log(result)
/* 결과>
1
3
5
3
1
3
10
*/
전체 코드를 한줄씩 훑어본다. (익명함수)
1) 함수가 순차적으로 힙에 쌓인다.
2) 콜스택에서 result가 선언되기 전에 함수(hello())가 실행
3) goak() 실행. console.log '1'이 바로 찍힌다. 리턴 ingoo() 호출 > console.log '3'이 찍힌다.
4) ingoo()의 결과값은 4로 종료 > goak()의 리턴값도 4.
5) console.log '5'가 찍힌다. > '3' > '1' > '3'
6) hello()의 리턴값은 10. 콘솔로그 result '10'이 찍힌다.
7) 익명함수가 사라지면서 코드 프로세스 종료
+) return 뒤의 문자열은 함수의 값을 대체한다. (일반적으로 수식 형태)
재귀함수로 피보나치 수열 출력
function f(x) {
if (x <= 1) {
return x;
}
return f(x - 1) + f(x - 2)
}
console.log(f(10))
~ 함수의 호이스팅 ~
// 매개변수
// 함수선언 함수명
function showMessage(name, age) {
// 코드블럭 안의 내용을 실행
return 1 // return의 기본값은 undefined. return을 만나면 함수 종료
}
//함수호출 // 인자
showMessage('Joo', 34)
함수 선언은 호이스팅이 일어난다. (호출 코드를 선언보다 위에 넣어도 에러X)
var
의 호이스팅. (undefined가 출력된다. 대입은 제자리에, 선언만 위로 당김)
console.log(num)
var num = 10
>
var num
console.log(num)
num = 10