자바 스크립트의 블록 범위

에서 설명한 것처럼 let & const 키워드는 다르게 동작합니다. 그들과 "let & const는 블록 범위입니다"라고 쓰여진 var 사이의 차이점을 보았을 것입니다.

그러나 블록은 무엇입니까?

중괄호{}로 묶인 모든 항목은 블록입니다. 기본적으로 js가 1로 인식하는 두 개의 문장을 함께 묶으면 그것이 블록입니다.

{
}


완벽하게 정상적인 자바스크립트 코드의 전형적인 예😌

예를 들어 보겠습니다.

{
   let x=9;
   const y=10;
   var z=0;
}
console.log(z)
console.log(y)
console.log(x)



출력은 var z만 액세스할 수 있음을 보여줍니다. 이는 호이스트될 때 z는 전역 공간에 할당되고 let & const는 블록 내부에서만 사용 가능한 메모리block space에 할당되기 때문입니다.

와트시
또 다른 예:

let x=100;
const y=98;
var z=78;

{
   let x=9;
   const y=10;
   var z=0;
   console.log(x)
   console.log(y)
   console.log(z)
}

console.log("Outside:")
console.log(x)
console.log(y)
console.log(z)


이 경우:



블록 외부의 var z 값도 변경되지만 블록 외부의 x & y 값은 원래 값과 동일합니다.

이는 두 경우 모두 z가 전역 공간에서 동일한 위치를 가리키고 있지만 블록 내부의 x & y는 블록 메모리 공간에 있고 x & y 외부는 별도의 메모리 공간에 있기 때문입니다. 이것을 쉐도잉이라고 합니다.


(네, "다음에 눈을 불태우고 싶을 때까지 라이트 모드!"라며 라이트 모드를 오래 사용했습니다.)

그러나 함수로 만들면 var 값도 변경되지 않는다는 점을 기억하십시오. 함수는 별도의 하위 프로그램으로 작동하고 각각 고유한 실행 컨텍스트를 갖습니다.

You cannot shadow a let declared data with var keyword. Using let k=10 outside the block and then var k=10 inside will throw a syntax error
⭐ Lexical scope in Javascript

좋은 웹페이지 즐겨찾기