Web/Javascript

[Javascript] 모던 JS 6.3 (변수의 유효범위와 클로저) 과제

동띵 2022. 7. 4. 13:54

1) Does a function pickup latest changes?

-> Pete

 

2) Which variables are available?

-> Pete

 

3) counter는 독립적일까요?

-> counter과 counter2는 독립적인 렉시컬 환경을 갖게 되므로 0,1이 출력된다.

 

4) counter 객체

-> 잘 동작한다.
(Counter 내부의 두 중첩 함수는 동일한 외부 렉시컬 환경에서
만들어졌기 때문에 같은 count 변수를 공유한다.)

 

5) if 문 안의 함수

-> 에러 발생
(sayHi 함수는 if 문 안에서 정의했기 때문에
if 문 안에서만 사용 가능)

 

6) 클로저를 이용하여 합 구하기

function sum(a) {
    return function (b) {
        return a+b;
    }
}

 

7) Is variable visible?

-> 에러 발생

 

8) 함수를 이용해 원하는 값만 걸러내기

// inBetween
function inBetween(a, b) {
    return function(x) {
        return x >= a && x <= b;
    }
}

// inArray
function inArray(arr) {
    return function(x) {
        return arr.includes(x);
    }
}

 

9) 필드를 기준으로 정렬하기

function byField(fieldName){
  return (a, b) => a[fieldName] > b[fieldName] ? 1 : -1;
}

 

10) 함수를 사용해 군대 만들기

function makeArmy() {
  let shooters = [];
  for(let i = 0; i < 10; i++) {
    let shooter = function() { 
      alert( i ); 
    };
    shooters.push(shooter);
  }
  return shooters;
}