자바스크립트 범위

2212 단어 scopejavascript
프로그래밍 언어의 범위는 변수 및 매개변수의 가시성과 수명을 제어합니다.

범위에 대한 또 다른 사고 방식: 변수 또는 함수 이름과 같이 특정 식별자가 표시되거나 액세스 가능한 프로그램 부분입니다.

내가 범위에 대해 불평하는 이유는 다음과 같은 이유 때문입니다.
  • 보안. 변수는 프로그램의 특정 영역에서만 액세스할 수 있습니다.
  • 이름 충돌을 줄입니다. 다른 범위에서 동일한 변수 이름을 사용할 수 있습니다.
  • 버그. 우리는 모두 버그를 좋아합니까, 아니면 좋아합니까? 범위에 대해 조금 더 알게 되면 변수 값이나 문제를 이해하는 데 도움이 됩니다.

  • 예제에 들어가기 전에 어떤 유형의 범위가 존재하는지 알아야 합니다.
  • 글로벌
  • 기능
  • 블록

  • 글로벌
    함수나 블록(중괄호 한 쌍) 안에 있지 않은 변수는 전역 범위 안에 있습니다.

    기능
    함수 내부에서 선언된 모든 변수는 해당 함수 내에서만 액세스할 수 있습니다. 즉, 외부에서는 액세스할 수 없습니다.

    차단하다
    ES6에서는 var와 달리 let 및 const 변수를 도입했으며 범위를 가장 가까운 중괄호 쌍으로 지정할 수 있습니다. 즉, 해당 쌍 외부에서 액세스할 수 없습니다.

    마지막으로 JavaScript가 변수 값을 찾는 방법입니다.
  • 현재 범위 확인
  • 외경 확인
  • 전역 범위 확인

  • 여전히 변수를 찾을 수 없으면 전역 범위에서 변수를 암시적으로 선언하거나 오류를 반환합니다.

    예시 시간:

    글로벌

    var meow = 'Meow';
    
    function cat () {
     return meow
    }
    
    // value returned by cat is 'Meow'
    cat()
    
    console.log(meow) // Prints 'Meow'
    


    이 경우 변수 meow는 전역 범위에 있기 때문에 오류를 반환하지 않으며 함수 범위나 블록 범위가 아니므로 어디에서나 액세스할 수 있습니다.

    기능

    function cat () {
      var meow = 'Meow';
      return meow
    }
    
    // value returned by cat is 'Meow'
    cat()
    
    console.log(meow) // Uncaught ReferenceError: meow is not defined
    


    고양이 외부에서 야옹에 접근하려고 하면 고양이 함수에서만 야옹에 접근하거나 볼 수 있기 때문에 Uncaught ReferenceError: meow is not defined를 반환합니다.

    차단하다

    if(true) {
      const cat = 'meow';
      var meow = 'Meowwwww!!!!';
      console.log(cat); // Prints 'meow'
    }
    
    console.log(cat); // Uncaught ReferenceError: cat is not defined
    
    console.log(meow); // Prints 'Meowwwww!!!!'
    


    그래서 여기서 무슨 일이 일어나고 있는지, 변수 cat은 중괄호 또는 블록 범위 때문에 if 문에 바인딩됩니다.

    이 경우 if 문 외부에서 액세스한 변수 cat if는 위에서 정의한 대로 오류를 반환하지만 meow는 블록 범위가 아니므로 예상 값을 반환합니다. const 및 let 변수는 블록 범위임을 기억하십시오.

    요약
  • 범위는 변수가 표시되고 액세스할 수 있는 영역입니다.
  • 함수와 마찬가지로 JavaScript의 범위는 중첩될 수 있으며 JavaScript 엔진은 범위 체인(JavaScript가 변수를 찾는 방법)을 탐색하여 프로그램에 사용된 변수를 찾습니다.
  • 좋은 웹페이지 즐겨찾기