마스터가 이것을 소개했을 때 두 번째 사용 환경을 보았는데, 원문은 여기에 있습니다: http://www.ruanyifeng.com/blo...여기의 개체는 이것이 되어야 할까요? 그렇다면 왜 이것이 가장 일치하지 않습니까?
출력은 다음과 같습니다:1false
이===전역 보기 창
console.log()가 전역 환경에서 실행될 때 이것은 물론 창을 가리킵니다. 이것은 함수의 현재 실행 환경을 가리킵니다.
o.m()은 이것을 o 객체에 암시적으로 바인딩합니다. 전역 범위에서 이것은 전역 객체를 가리킵니다
또 다른 호출 방법인 func.call(context, x, m)이 있다는 점을 기억하세요. 위의 두 가지 방법은 단지 구문적 설탕일 뿐입니다.
는
논리적으로 말하면 인쇄된 이 내용은 정의되지 않아야 합니다. 하지만 브라우저에는 다음과 같은 규칙이 있습니다.
전달한 컨텍스트가 null이거나 정의되지 않은 경우 창 개체가 기본 컨텍스트입니다(엄격 모드의 기본 컨텍스트는 정의되지 않음). 따라서 위의 내용은 창에 해당해야 합니다.
이===전역 보기 창
console.log()가 전역 환경에서 실행될 때 이것은 물론 창을 가리킵니다.
이것은 함수의 현재 실행 환경을 가리킵니다.
o.m()은 이것을 o 객체에 암시적으로 바인딩합니다.
전역 범위에서 이것은 전역 객체를 가리킵니다
또 다른 호출 방법인 func.call(context, x, m)이 있다는 점을 기억하세요. 위의 두 가지 방법은 단지 구문적 설탕일 뿐입니다.
으아악는
와 동일합니다. 으아악논리적으로 말하면 인쇄된 이 내용은 정의되지 않아야 합니다.
하지만 브라우저에는 다음과 같은 규칙이 있습니다.
전달한 컨텍스트가 null이거나 정의되지 않은 경우 창 개체가 기본 컨텍스트입니다(엄격 모드의 기본 컨텍스트는 정의되지 않음).
따라서 위의 내용은 창에 해당해야 합니다.