• Scope?

    • 유효한 범위
    • 한 변수 혹은 한 데이터가 쓸 수 있는 범위
  • 종류

    • 전역 scope : 전체영역 : 전역 scope 에서 선언된 변수 : 코드 전체에서 유효한 값을 가진다.

      • 어떤 것으로도 둘러싸여 있지 않을때
      • let,const가 쓰이지 않는 일반적인 block 스코프
      //예제1
      //어떤 것으로도 둘러싸여 있지 않기 때문에 num은 전역변수이다.
      var num = 10;
      console.log("전역에서 출력하는 num : " , num);
      function numTest(){
      	console.log("함수 안에서 출력하는 num : " ,num);
      }
      numTest();
      
      //예제2
      //let,const로 선언되지 않았기 때문에 num1또한 전역변수이다.
      {
      	var num=10;
      }
      
      console.log("전역에서 출력하는 num1 : " , num1);
      function numTest(){
      	console.log("함수 안에서 출력하는 num1 : " ,num1);
      }
      numTest();
      
      • 주의 사항
        • 전역 변수는 가급적 사용을 자제할 것 → 전역 변수는 시스템 전체에 영향을 주기 때문에!
        • 코드를 기능별 / 함수별로 잘 관리 해주기 위해서 전역 변수를 쓰지 않기를 권한다.
        • 전역변수는 쓰더라도 값이 변경되지 않도록 할것
    • 지역 scope : 일부지역 : 지역 scope 에서 선언된 변수 : 특정 영역에서만 유효한 값을 가진다.

      • 블록 scope : 블록 내에서만 유효한 값을 가진다. (블록? → 중괄호로 표시된 범위)

      • 함수 scope : 함수 내에서만 유효한 값을 가진다. (함수내에서만 유효한 스코프)

      • 블록 scope 예시

        var name = "jitae";
        
        console.log(name); // jitae
        
        {
        	const name = "영수";
        	console.log(name); //영수 -> 블록 스코프로 지역변수 name이 유효한 범위입니다.
        }
        
        console.log(name); //jitae -> 전역 변수로 되어있는 name이 출력된것
        
      • 함수 scope 예시

        function funScope(){
        	var num = 10;
        	console.log(num); //함수 내에서 선언된 변수를 사용했기 때문에 오류가 뜨지 않음
        }
        
        console.log(num); // 오류 : 함수 내에서 선언된 변수를 사용했기 때문에