이제 우리는, 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