[JS]함수 선언 기초

이정원·2022년 7월 15일
0

정발이의코딩일지

목록 보기
2/8

코드부터 살펴보자

let x = 120;
var z = 30

function createFunction1() {
    function y() {
        if (x % 2 && x != 0) {
            return x * z;
        }
        else {
            return Math.random();
        }
    }
    return y;
}

function createFunction2() {
    x = 30;
    function f() {
        return x; 
    }
    return f;
}

let f1 = createFunction1();
console.log(f1());          // 무작위 수
let f2 = createFunction2();
console.log(f2());          // 30

let f1 = createFunction1(); 로 f1에 createFunction1()에 있는 값을 할당시켰다.

console.log(f1()); f1을 호출한다. f1에는 createFunction1()에 있는 값을 할당시켰기 때문에

위의 function createFunction1()로 올라가게 된다. function y()를 만나 if을 수행하게 되고

x에는 120이 들어있기 때문에 x % 2는 0, x != 0은 true이다.

&&연산자는 둘 다 참일 때 참이기 때문에 x % 2 는 0이므로 0은 false를 의미하므로 else로 내려가게 된다.

그러므로 console.log(f1())은 무작위 수가 출력되고, 같은 원리로 동작하여 console.log(f2())는 30이 출력된다.

  • 120과 30은 변하지 않는 상수이기때문에 const로 변수 선언을 해주는 것이 좋다.
profile
Study.log

0개의 댓글