//익명 함수 호출에 call 사용
var animals = [
  { species: 'Lion', name: 'King' },
  { species: 'Whale', name: 'Fail' }
];

for (var i = 0; i < animals.length; i++) {
// 여기서 function을 ()로 묶는 이유가 머야?? 먼저 실행할려고 하나 그것도 아닌데
 (function(i) {  
    this.print = function() {
      console.log('#' + i + ' ' + this.species
                  + ': ' + this.name);
    }
    this.print();
  }).call(animals[i], i);
}

첫번째 인수 지정 없이 함수 호출에 call 사용

아래 예제에서, display 함수에 첫번째 인수를 전달하지 않고 호출합니다. 첫번째 인수를 전달하지 않으면, this의 값은 전역 객체에 바인딩됩니다.

→ 지역객체로 선언이 되어있으면 못찾음