[TIL]201022

슬지로운 개발생활·2020년 10월 22일
0

TIL

목록 보기
19/73
post-thumbnail

1. Koans

04_Scope

스코프는 함수를 선언할 때 생긴다.

lexical scope

  • 자바스크립트는 렉시컬 스코프를 따르므로 함수를 선언한 시점에 상위 스코프가 결정된다.
  • 렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정된다.
  • 함수를 처음 선언한 순간, 함수 내부의 변수는 자기 스코프로부터 가장 가까운 곳(상위 범위에서)에 있는 변수를 계속 참조한다.
    var x = 'global scope';
    function foo() {
      var x = 'local scope';
      bar();
    }
    function bar() {
      console.log(x);
    }
    foo(); // 'global scope';
    bar(); // 'global scope';

2. Else

Window.getComputedStyle()

태그의 스타일을 찾는 메소드, 현재 적용된 CSS속성 값을 알 수 있다.
let pEl = document.querySelector('p');
Window.getComputedStyle(pEl);

scope chain

  • 전역변수와 지역변수의 관계에서 나오는 개념.
  • 내부 함수에서는 외부 함수의 변수에 접근 가능하나 외부함수에서는 내부 함수의 변수에 접근 할 수 없다.
  • 내부 함수에 찾는 변수가 없으면 한 단계 올라가 외부 스코프에서 찾고, 없으면 다시 올라가 전역 스코프에서 찾는다.
    → 이렇게 꼬리를 물고 계속 범위를 넓히면서 찾는 관계를 스코프 체인이라고 한다.
    var color = 'red';
    function outer() {
      console.log('외부 color: ', color);
      function inner() {
        var car = 'ferrari';
        console.log('내부 color: ', color);
      }
      inner();
    }
    outer(); // 외부 color: red, 내부 color: red
    console.log(car); // undefined

foo() & bar() & foobar()

  • Metasyntactic variable: 프로그래밍 상에서 임시로 변수이름을 지정해줘야 할 때 주로 쓰이는 변수이름이다.(한국으로 따지자면 홍길동과 같은...)
  • 세계 2차대전 당시 미 육군에서 쓰이던 여러 줄임말 중, 알아보지 못할 정도로 개판이 됐다는 뜻인 FUBAR(F-ed Up Beyond All Recognition)에서 Foo와 Bar가 유래했다는 설
  • 참고로 파이썬에서는 spam, ham, eggs가 쓰인다
    → 동명의 코미디 그룹인 Monty "Python"에서 제작한 코미디 단편인 "Spam" 에서 유래된 것이라고 한다.

TODAY MOOD

lexical scope보다 다른정보가 더 많다;;;;
closure은 들어가지도 못했다ㅠㅠㅠ
내일은 클로져 뽀개보쟈!!

0개의 댓글