부트캠프교육중/JavaScript

[JavaScript] scope문제풀이

뭉지야 2023. 1. 4. 20:01
728x90
function () {
    let age = 27;
    let name = 'jin';
    let height = 179;

    function outerFn() {
      let age = 24;
      name = 'jimin';
      let height = 178;

      function innerFn() {
        age = 26;
        let name = 'suga';
        return height;}

      innerFn();

      expect(age).to.equal(??);
      expect(name).to.equal(??);

      return innerFn;
    }

    const innerFn = outerFn();

    expect(age).to.equal(??);
    expect(name).to.equal(??);
    expect(innerFn()).to.equal(??);
  });
});

// ??에 들어갈답은?

#정답

function () {
    let age = 27;
    let name = 'jin';
    let height = 179;

    function outerFn() {
      let age = 24;
      name = 'jimin';
      let height = 178;

      function innerFn() {
        age = 26;
        let name = 'suga';
        return height;}

      innerFn();

      expect(age).to.equal(26);
      expect(name).to.equal('jimin');

      return innerFn;
    }

    const innerFn = outerFn();

    expect(age).to.equal(27);
    expect(name).to.equal('jimin');
    expect(innerFn()).to.equal(178);
  });
});

#풀이

디버그를 해보니 12345순서로 따라갔다

구역을 나눠서 정리해보니

27
jin -> jimin
179
----------------------
24->26   outerfn
undefined
178
---------------------
inner
"suga"
178

 

이렇게 되었다

그래서 안에 답은 26과 jimin이고

밖은 27, jimin, 178이었다.

 

728x90