문에 전역 속성을 도입하시겠습니까?
JavaScript에서 var 선언은 전역 객체에 속성을 생성합니다. 그러나 ES6에 도입된 let 선언은 블록 수준 가시성으로 어휘 범위 지정을 적용합니다.
Do let Declarations Create Global Properties?
ECMAScript 사양에 따르면, 문은 전역 객체에 속성을 생성하지 않습니다. 전역 바인딩은 주로 전역 개체에 연결된 전역 환경의 개체 환경 레코드에 저장됩니다. var를 사용한 함수, 생성기, 변수 선언은 이 객체 환경 레코드에 포함되고, let과 같은 다른 선언은 선언적 환경 레코드에 저장됩니다.
설명
전역 객체에 직접 속성을 생성하는 var와 달리 선언적 환경 레코드 내에 바인딩이 포함되도록 합니다. 이 레코드는 내부 데이터 구조를 활용하므로 외부에서 액세스할 수 없습니다. 반면 개체 환경 레코드는 데이터 저장을 위해 JS 개체를 활용합니다. 여기서 각 개체 속성은 바인딩을 나타냅니다. 결과적으로 var 바인딩은 전역 개체의 속성으로 반영됩니다.
브라우저 및 Node.js 동작
브라우저에서 Firefox와 같은 일부 구현은 모순되는 동작을 나타냅니다. 사양. 바인딩이 전역 개체(창)의 속성으로 표시되도록 합니다. 그러나 엄격한 Node.js 환경에서는 --harmony 또는 --harmony_top_level 플래그를 사용하여 선언적 환경 레코드 내에서 바인딩이 올바르게 격리되도록 합니다.
결론
에도 불구하고 어휘 범위 지정으로 인해 let 선언은 전역 객체에 속성을 도입하지 않습니다. 대신 글로벌 환경의 선언적 환경 기록에 국한되어 제공하는 캡슐화 및 블록 수준 가시성을 강조합니다.
위 내용은 `let` 문은 JavaScript에서 전역 속성을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!