돌아가기

bind를 적용한 함수를 메서드에 정의하기

중요도: 5

아래 코드를 실행하면 어떤 결과가 나올까요?

function f() {
  alert( this ); // ?
}

let user = {
  g: f.bind(null)
};

user.g();

정답: null

function f() {
  alert( this ); // null
}

let user = {
  g: f.bind(null)
};

user.g();

bind를 적용한 함수의 컨텍스트는 완전히 고정됩니다. 한번 고정되면 바꿀 방법이 없습니다.

따라서 user.g()를 실행했음에도 불구하고 기존 함수의 컨텍스트는 null이 되기 때문에 null이 출력됩니다.