블록 수준 범위의 역할: 너무 많은 전역 변수 및 함수로 인해 발생하는 명명 충돌을 해결합니다. JavaScript는 반복되는 선언을 무시하여 잘못된 실행 결과를 초래합니다. 블록 수준 범위는 이 문제를 해결하므로 각 개발자는 전역 범위를 망칠 염려 없이 자신의 변수를 사용할 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
중괄호 쌍({ 및 }) 안의 모든 문 집합은 블록에 속합니다. 여기에 정의된 모든 변수는 코드 블록 외부에서 볼 수 없습니다. 이를 for, while, if
와 같이 블록 수준 범위라고 합니다.그리고 JavaScript에는 블록 수준 범위가 없습니다(es6 표준이 나오기 전에 JavaScript에는 블록 수준 범위가 없었습니다). 즉, JavaScript 코드 블록에 변수를 정의하면 코드 블록 외부에서도 계속 사용할 수 있습니다. 이 변수를 사용하세요 , 예:
<script type="text/javascript"> var i=1; if(i==1){ var b=2; } alert(b);//输出2 function outputNumbers(count){ for(vari=0;i<count;i++){ alert(i); } alert(i); //计数 } </script>
Java 및 C++와 같은 언어에서 변수 i는 for 루프의 명령문 블록에서만 정의됩니다. 루프가 끝나면 변수 i가 삭제됩니다. 그러나 JavaScript에서는 변수 i가 outputNumbers()의 활성 개체에 정의되어 있으므로 정의된 시점부터 함수 내부 어디에서나 액세스할 수 있습니다.
블록 수준 범위는 너무 많은 전역 변수 및 함수로 인해 발생하는 이름 지정 충돌을 해결할 수 있습니다. 왜냐하면 JavaScript는 반복되는 선언을 무시하고(그러나 후속 선언에서는 변수 초기화를 수행하므로) 잘못된 실행 결과를 초래하기 때문입니다. 이 오류를 잡으려면 아마도 많은 노력이 필요할 것입니다.
많은 개발자가 작성한 대규모 애플리케이션에서 개인 범위를 사용하면 각 개발자가 전역 범위를 망칠 염려 없이 자신의 변수를 사용할 수 있습니다.
js에는 블록 수준 범위가 없지만 클로저/익명 함수를 사용하여 블록 수준 범위를 모방할 수 있습니다.
블록 수준 범위(개인 범위라고도 함)의 익명 함수 구문은 다음과 같습니다.
(function(){ //这里是块级作用域 })();
위 코드는 익명 함수를 정의하고 즉시 호출합니다. 함수 선언을 괄호 한 쌍으로 묶으면 실제로는 함수 표현식임을 나타냅니다. 바로 뒤에 있는 또 다른 괄호 쌍은 즉시 이 함수를 호출합니다.
익명 함수를 사용하여 JavaScript에서 블록 수준 범위를 구현하는 예
function outputNumbers(count){ (function(){ for(var i=0;i<count;i++){ alert(i); } })(); alert(i); //导致错误! }
이 예에서 익명 함수에 정의된 모든 변수는 실행이 끝나면 삭제됩니다. 따라서 변수 i는 루프 내에서만 사용할 수 있으며 사용 후에는 삭제됩니다. 이 익명 함수는 포함 범위의 모든 변수에 액세스할 수 있는 클로저이기 때문에 변수 count는 개인 범위에서 액세스할 수 있습니다.
어디에 있든 일시적으로 일부 변수가 필요한 한 비공개 범위를 사용할 수 있습니다
[관련 권장사항: javascript 학습 튜토리얼]
위 내용은 자바스크립트 블록 수준 범위의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!