카테고리 없음

3.6 JavaScript Koans 블로깅 과제

스우티 2023. 3. 6. 16:03
it('lexical scope와 closure에 대해 다시 확인합니다.', 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);
  });
});

스코프 이놈들

 

스코프의 정의

"변수 접근 규칙에 따른 유효 범위"

  1. 안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대는 불가능합니다.
  2. 스코프는 중첩이 가능하다.
  3. 가장 바깥의 스코프는 전역 스코프 (Global Scope) <-> 전역이 아닌 다른 스코프는 전부 지역 스코프(local Scope)
  4. 지역 스코프에서 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수
  5. 지역 변수는 전역 변수보다 더 높은 우선순위를 가짐

const 키워드

  • 변하지 않는 값, 곧 상수(constant)를 정의할 때에는 const를 이용합니다. 
  • 값의 재할당이 불가능합니다. 값을 재할당할 경우 TypeError를 내므로, 의도하지 않은 값의 변경을 막을 수 있습니다.
  • let 키워드와 동일하게 블록 스코프를 따릅니다.

 

 

 

 

 

정말 제대로 알고 있어야 하는것 

type of 1 // 'number'

type of '1' // 'string' 문자열