JS-9 (22/11/03)

nazzzo·2022년 11월 10일
0

[목차]
1. 콜스택 개념 복습
2. 재귀함수 복습


1. 콜스택 개념 재정리

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 뒤의 문자열은 함수의 값을 대체한다. (일반적으로 수식 형태)


2. 재귀함수 복습




재귀함수로 피보나치 수열 출력

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

0개의 댓글

관련 채용 정보