는 다음과 같은 코드를 생각해 보자.
그러나 엄격 모드에서는 작동하지 않습니다. 왜? the MDN에서글로벌 개체 액세스는
답변
이유는 이미 dystroy에 의해 설명되었습니다. this
은 엄격 모드의 전역 개체가 아닙니다.
var global = (function(g){
return g;
}(this));
이유는 ES5 specification에 따른 것이다 : this
엄격 모드 코드 내 평가
이면
this
값 여기서 해결 (즉 가정 전역에서 실행중인) 인 물체에 강요 당하지 않는다.null
또는undefined
의this
값은
이것은 'var global = this;'와 어떻게 다른가요? –
그렇지 않습니다. 목적은 함수 내부의 전역 객체에 대한 액세스를 용이하게하는 것입니다. – bfavaretto
오오 .. 오케이. 감사. –
: 지정된
for a strict mode function, the specified this is used unchanged:
...
"use strict";
function fun() { return this; }
assert(fun() === undefined);
그래서이 정확히입니다.
ES5 사양은 간접 평가를 통해 전역 객체를 검색 할 수 있습니다 전역 객체로 변환되지 않습니다.
var global = (0, eval)('this');
엄격 모드와 비 엄격 모드 모두에서 작동합니다.
간접적 인 평가는 기본적으로 참조가 아닌 값에 의해 (또는 "eval"인 값 바인딩의 이름없이) eval을 호출하는 것입니다. 간접 평가는 전역 범위에서 실행되고 전역 범위의 this
은 전역 개체를 참조합니다.
에서이 문제를 다루는 자세한 기사가 : http://perfectionkills.com/global-eval-what-are-the-options/
고마워. 젠장. 정확히 내가 필요로하는 ... –
- 1. 액세스는
- 2. 액세스는
- 3. 자체 등록 글로벌 개체
- 4. 글로벌 개체 만들기?
- 5. 글로벌 개체 가용성 확인
- 6. 액티비티 간의 글로벌 개체
- 7. 저장하는 "글로벌"개체
- 8. 개체 함수를 사용하는 글로벌 콜백
- 9. 파이썬 글로벌 새 개체 인스턴스
- 10. PHP 액세스는
- 11. 액세스는 확장
- 12. 액세스는 data.table
- 13. ASP.NET 액세스는
- 14. 파일 액세스는
- 15. 액세스는 모두의
- 16. 사용자 액세스는
- 17. 글로벌 자바 스크립트 이벤트 처리 개체 컨텍스트
- 18. 글로벌 및 로컬 상태의 많은 개체
- 19. 아파치, htaccess에서 하위 도메인 액세스는 허용하지만 폴더 액세스는 허용하지 않으시겠습니까?
- 20. 액세스는 오픈 소셜 가젯
- 21. 티타늄 액세스는 다른 컨트롤러
- 22. MS 액세스는 다음
- 23. 액세스는 Windows 서비스
- 24. 액세스는 파이썬 상위 폴더
- 25. 액세스는 특정 요소가
- 26. 액세스는 액티브 관계
- 27. 액세스는 동적 버튼
- 28. (403)에 대한 액세스는
- 29. 액세스는 윈도우 7
- 30. 사전 액세스는 스레드로부터 안전합니까?
'반환 창,'엄격 모드에서. – jAndy