블록 레벨 범위 nodejs

이제 우리는, CONST, 특성과 사용을, 세 가지 키워드 VAR을 이해 할 수 있습니다.

했다

자바 스크립트, 우리가 일반적으로 범위에 관계없이 코드에 선언되는 경우, 가장 현재 범위의 상단에 추진됩니다의 기능 범위, 변수 var 문을이라고 말하고,이 문제가 변수 리프트라고합니다 (ㅏ)

변수가 함수 내부에서 선언 된 경우 전역 변수 선언에서는, 글로벌 범위 위로 상승 할 때 즉, 상기 기능의 시작을 촉진 할 것이다.

 

기능 테스트 () { 
    CONSOLE.LOG는 ( '1', a) // 정의되지 않은 
    경우 ( 거짓 ) {
       var에 A = 1 
    } 
    CONSOLE.LOG ( '3', a) // 미정 
} 

시험 ()

 

실제 구현은, 함수에서 위의 코드 변수가 if 문의 조건이 거짓 인 경우에도 문장의 상단에 발생합니다, 같은 변수 리프트에 영향을주지 않습니다.

테스트 기능 () { 
    var에 A를 
    //이 문이 할당되지 않은 
    을 console.log를 ( '1.', A) 정의되지 않은 // 
    IF (false로) { 
      . A = 1 
    } 
    // 어떤 할당 문 
    을 console.log를 ( '3' , A) // 미정 
}

  현장에서 기능이 중첩 기능, 변수는, 최근 함수의 상단에 상승하지만, 외부 함수로 업그레이드되지 않습니다.

// B 함수 a의 정상에 제기하지만, 기능 시험이 향상되지 않습니다. 
    시험 함수 () { 
        함수 A () { 
          IF (거짓으로) { 
            var에 B = 2 
          } 
        } 
        CONSOLE.LOG ( 'B', B) 
    } 

    시험 () // B는 정의되지

  진술하지 않는 경우는,이 ​​점은 별도의 영역에 있어야 더 할당은 문없이 문 후 동일하지 않습니다, 오류 우리가 버그를 찾는 데 도움이됩니다

// 어떤 경우의 선언 
    (A)는 정의되지 않은

  방해

const를 선언하고 블록 레벨 범위를하자 및 사용은 특성 변수가 해제되지하자, VAR과 유사하지만, 현재 블록에 잠겨 할 수 있습니다.

아주 간단한 예 :

시험 함수 () { 
        IF (true로) { 
          일반적으로 임시 데드 존이라고 TDZ의 CONSOLE.LOG (A)가 //, 현상을 설명하는 데 사용되는 변수는 향상되지 않고 
          송출 A를 =. 1 
        } 
    } 
    테스트 () // A는 정의되지 않은 

    기능 검사 () { 
        IF (true로) { 
          송출 된 A =. 1 
        } 
        CONSOLE.LOG (A) 
    }     
    시험 () // A는 정의되지

  첫 번째 문을 다음 방문 : 유일한 올바른 방법은 사용할 수 있습니다.

기능 검사 () { 
        경우 (TRUE) { 
          하자 = 1 명 
          을 console.log (A) 
        } 
    } 
    테스트 () // 1

  

 

추천

출처www.cnblogs.com/danruoyanyun/p/11390157.html