돌아가기

배열 컨텍스트에서 함수 호출하기

중요도: 5

아래 코드를 실행하면 어떤 결과가 나올까요? 그리고 그 이유는 무엇일까요?

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
})

arr[2](); // ?

arr[2]()를 호출하는 것은 objarr이고, method2인 메서드 obj[method]()를 호출하는 것과 문법적으로 동일합니다.

즉, arr[2]에 있는 함수가 객체 메서드처럼 호출되는 것이죠. 따라서 arr[2]arr을 참조하는 this를 받고, 배열을 출력합니다.

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
})

arr[2](); // a,b,function(){...}

배열은 초기 2개의 값에 함수가 추가되어 총 3개의 값을 가집니다.