무엇'글로벌'체에 및 라이브러리
나는've 그 이상한 행동을의이
키워드가 및 라이브러 environment. 나는'm 로 그들을 나열하는 코드입니다. 나는've 실행 코드와 함께및 라이브러 v6.x
,하나의``자바 스크립트 파일입니다.
을 테스트하는 동안 한 줄의 코드를 다음과 같이 여부,함께 또는없이'사용하여 엄격한'
,성명이 포인트 빈 개체{}
.
console.log(this)
하지만,때 나는'm 문을 실행하는 내에서 실행하는 자와 같은 기능,
(function(){
console.log(this);
}());
It's 를 인쇄하는 정말 큰 개체입니다. 보 글로벌 실행 컨텍스트 객체에 의해 만들어및 라이브러리
환경이다.
고 실행되는 동안 위의 기능을 가진'사용하여 엄격한'
문 expectedly it's 쇄undefined
(function(){
'use strict';
console.log(this);
}());
하지만 작업하는 동안,브라우저(I've 테스트만을 가진Chrome
),첫 번째 세 가지 예수익의창의
객체고 마지막 중 하나에게 준undefined
으로 예상된다.
행동의 브라우저히 이해할 수 있습니다. 하지만,의 경우에는및 라이브러리
,그것은 만들지 실행 컨텍스까지,나는'm 감싸 안는 기능입니까?
그래서 대부분의 코드에서라이브러리에 해당하는 개발용
으로 실행 빈글로벌object
?
43
4
는 브라우저에서는 글로벌 범위의
창의
객체가 및 라이브러리의 글로벌 범위 모듈은 모듈을 자체,그래서를 정의할 때는 변수에는 전역의 범위 및 라이브러리 모듈,그것은 로컬을 이 모듈이 있습니다.에 대해 자세히 알아볼 수 있습에서 그것및 라이브러리 설명서는 곳에 그것을 말합니다:
과에서 당신의 코드를 작성할 때:
-
console.로그(이)
빈 js 파일(모듈)그것을 인쇄할 것입 빈 개체{}
참조 빈 모듈이 있습니다. -console.로그(this);
안에 각자를 호출하여 기능,이
을 가리키는 글로벌 및 라이브러리 범위 객체를 포함하는 모든 및 라이브러 일반적인 속성과 같은 방법require()
,모듈
,exports
,콘솔
... -console.로그(이)
을엄격한 모드안에 각자 함수를 호출하여 그것은 인쇄undefined
으로 호출되는 자기능지 않't 는 기본 지역 개체 범위에엄격한 모드.값이
이
에서 노드 모듈:이
에서 라이브러리에 해당하는 개발용글로벌 범위은 현재 모듈이 있습니다.수출 개체하지 않 글로벌 객체입니다. 이것은 다른 브라우저에서는 글로벌 범위는 글로벌창의
객체입니다. 다음 코드를 참조하십시오에서 실행 노드:먼저 우리를 로그에 emty 개체 없기 때문에 값이
에서 모듈이 있습니다.수출
이 모듈이 있습니다. 그런 다음 우리는foo
에서 모듈이 있습니다.수출객체을 때,우리는 그런 다음 다시 로그인
이우리는 볼 수 있습니다 그것은 이제 로그를 업데이트된 모듈이 있습니다.수출
개체입니다.어떻게 접속할 수 있는
글로벌
개체:우리에 액세스할 수 있는
글로벌
개체 노드를 사용하는글로벌
키워드:는
글로벌
개체 노출에 유용한 다양한 속성에 대한 환경입니다. 또한 이 기능으로setImmediate
과clearTimeout
있습니다.매우 흥미로운:
생산됩니다:
에서
3)
이은**undefined**로 autoboxed 개체에 엄격한 모드입니다. 는 없다는 것을 의미한 루트 객체에서 이러한 맥락이다. 을 사용하지 않는 경우 엄격한 모드는 다음의 코드가 박스에 의해 부모 범위가 있습니다.당신이 볼 수 있는 출력에서,및 라이브러리에 많은 정보에 대한 노드가 내부 물건입니다.에서
1)
의 출력은 비어 있기 때문에 객체에서 최고 수준의 코드 노드 모듈,이에 상응하는 모듈이 있습니다.수출 모듈에 있습니다.수출입 빈에서 이 예입니다.을 시작으로문서에서는 글로벌 콘텍스트에 노 환경
각 JS 파일로 처리 모듈. 노드를 자동으로 감싸 코드의 JS 파일에 자기 인생으로
수출을 필요로,모듈,__름,__dirname
매개 변수로 기능입니다.아래 스크린샷의 실행 컨텍스트가 사용하는
노드를 디버깅
실행하는 경우 아래 코드는,인쇄
진정한 의미하는
이것은의미
수출`in node.js. 최 설명했다정답.는 의미에서 실행 코드를 감싸는 유사한 무언가에서 아래와 같이 Node.js 분리하는 코드에서는 글로벌 콘텍스트를 사용하여래퍼 기능은 컨텍스트.
응답을 다음 포인트 참조 이 문서]4완전히:
그래서 이 코드를 실행할 때
인쇄하는
글로벌
개체고에서사용은 엄격한
모드 인쇄undefined
을 기억하십시오:
브라우저에서 기능이 포장되지 않습으로 인생/래퍼 기능은 컨텍스트에서 노드의 그것의 직접 실행
창의
객체입니다. 따라서 호출되는 상황에 따라 다릅 Node.js 고 브라우저입니다.또한 읽기이.