스코프에 대해서(전역스코프, 지역스코프)

들블리셔·2021년 3월 11일
1

스코프란?


스코프는 변수가 영향을 미치는 범위, 혹은 변수의 유효범위 라고 할 수 있습니다.

스코프는 전역스코프(Global Scope)지역스코프(Local Scope)가 있습니다.





전역 스코프(Global Scope)


전역 스코프는 블록{} 바깥이나 함수 바깥에 선언 된 변수 입니다.

전역 코스프에 변수를 선언하면 어떤위치의 코드에서든 사용할 수 있는 변수가 됩니다.

이것을 전역변수 라고 합니다.

<script>
      var globalScope = "global";   //  전역스코프 (전역변수)
      
      function isGlobal() {
         return `${globalScope} 입니다.`;
      }
      console.log(isGlobal());   //  global 입니다.
</script>




전역변수를 함수내에서 사용가능하듯 어떤 곳에서든지 사용 가능합니다.





지역 스코프(Local Scope)


지역 스코프는 코드의 특정 부분에서만 사용할 수 있는 변수 입니다.

이것을 지역변수 라고 합니다.

지역 스코프는 함수 스코프블록 스코프 두 가지로 나뉩니다.




함수 스코프




함수 스코프는 말 그대로 함수 내부에서 선언 된 변수 입니다.

함수내부에서만 접근할 수 있습니다. (var, let, const 동일)



<script>
      function isLocal() {
         var localScope = "local"    //함수스코프 (지역변수)
         return `${localScope} 입니다.`
      }
      console.log(isLocal());   // local 입니다.
      console.log(localScope);  //Uncaught ReferenceError: local is not defined 
</script>




위와 같이 함수 내에 선언된 변수 localScope를 함수 바깥에서 콘솔창으로 접근해보았지만 에러가 뜹니다.




블록 스코프




블록 스코프 또한 말그대로 블록{}, if문 , for문 블록 내부에서 선언 된 변수 입니다.

블록 내부에서만 접근 가능 합니다.

(단, 블록 내부에서 선언 한 변수는 블록 내부에서만 사용 가능 한게 정상이지만, var은 내부에서도 선언 해도 바깥에서 접근 사용이 가능합니다.)





<script>
      if(true) {
         let blockScope = "블록 스코프 입니다.";
      }
      console.log(blockScope);	//  Uncaught ReferenceError: blockScope is not define
</script>





if문의 블록 내부에서 선언 한 변수이기때문에

접근하지 못해 에러가 뜨게 됩니다.





제외인 var로 했을 경우

<script>
      {
         var age = 28;
      }
      console.log(age);    // 28
</script>




블록 내부에서 선언된 변수 age가

이상하게도 바깥에서도 접근이 된 모습입니다.

var은 블록 스코프가 아니다 라느 의미 입니다.

let ,const는 블록 스코프 입니다.






처음에는 var, let, const 다 같은 변수 선언 방식인데 그 차이점을 몰랐지만

공부해서 알아보았습니다! 이제는 어느정도 이해를 하고 사용할 수 있겠다 싶습니다.

profile
나의 공부방

1개의 댓글