>웹 프론트엔드 >프런트엔드 Q&A >자바스크립트 블록 수준 범위의 용도는 무엇입니까?

자바스크립트 블록 수준 범위의 용도는 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-18 12:03:422963검색

블록 수준 범위의 역할: 너무 많은 전역 변수 및 함수로 인해 발생하는 명명 충돌을 해결합니다. 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에서 블록 범위를 구현해야 하는 이유와 용도는 무엇입니까?

블록 수준 범위는 너무 많은 전역 변수 및 함수로 인해 발생하는 이름 지정 충돌을 해결할 수 있습니다. 왜냐하면 JavaScript는 반복되는 선언을 무시하고(그러나 후속 선언에서는 변수 초기화를 수행하므로) 잘못된 실행 결과를 초래하기 때문입니다. 이 오류를 잡으려면 아마도 많은 노력이 필요할 것입니다.

많은 개발자가 작성한 대규모 애플리케이션에서 개인 범위를 사용하면 각 개발자가 전역 범위를 망칠 염려 없이 자신의 변수를 사용할 수 있습니다.

JavaScript에서 블록 수준 범위를 구현하는 방법

js에는 블록 수준 범위가 없지만 클로저/익명 함수를 사용하여 블록 수준 범위를 모방할 수 있습니다.

블록 수준 범위(개인 범위라고도 함)의 익명 함수 구문은 다음과 같습니다.

(function(){

  //这里是块级作用域

})();

위 코드는 익명 함수를 정의하고 즉시 호출합니다. 함수 선언을 괄호 한 쌍으로 묶으면 실제로는 함수 표현식임을 나타냅니다. 바로 뒤에 있는 또 다른 괄호 쌍은 즉시 이 함수를 호출합니다.

익명 함수를 사용하여 JavaScript에서 블록 수준 범위를 구현하는 예

function outputNumbers(count){
   (function(){
      for(var i=0;i<count;i++){
          alert(i);
         }
        })();
    alert(i); //导致错误!
   }

이 예에서 익명 함수에 정의된 모든 변수는 실행이 끝나면 삭제됩니다. 따라서 변수 i는 루프 내에서만 사용할 수 있으며 사용 후에는 삭제됩니다. 이 익명 함수는 포함 범위의 모든 변수에 액세스할 수 있는 클로저이기 때문에 변수 count는 개인 범위에서 액세스할 수 있습니다.

언제 비공개 범위를 사용할 수 있나요

어디에 있든 일시적으로 일부 변수가 필요한 한 비공개 범위를 사용할 수 있습니다

[관련 권장사항: javascript 학습 튜토리얼]

위 내용은 자바스크립트 블록 수준 범위의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.