💻 1. 웹개발_Front end/1-4 Javascript

[Javascript] 05-3 함수 스코프 개념 이해

달님🌙 2021. 9. 12. 20:50
반응형

 

함수 스코프란?

 

 

1. 의미 : 스코프의 사전적 의미는 '범위'이다. 변수 또는 유효 범위를 말한다.

2. 기본형

<script>
  function outerFunction() {
      var 변수명; // 지역 변수
      function innerFunction() { // 지역 함수
      	자바스크립트 코드; 
      } // 보안 철저함
  } 
  innerFunction(); // 접근 금지
</script>

 

3. 지역 변수란 ?

- 스코프 영역에서 선언한 변수, 스코프 영역에서만 사용 가능

 

4. 지역 함수란?

- 스코프 영역에서 선언한 함수, 스코프 영역에서만 사용 가능

 

전역변수와 지역변수의 개념과 차이

 

1. 의미 : 전역변수는 자바스크립트 어디에서든 사용할 수 있는 변수이고, 지역변수는 함수 스코프에서만 사용할 수 있는 변수이다.

 

2. 기본형 

<script>
  var 변수명; // 전역 변수
  function 함수명() {
      var 변수명; // 지역 변수
  } 
</script>

 

3. 예제 - 전역변수와 지역변수

<script>
        var score = 10; // 전역 변수
        function fnc() {
            var score = 50; // 지역 변수
            alert(score); // 50
        }
        fnc();
        alert(score); // 10
</script>

 

 

전역함수와 지역함수의 차이

 

1. 의미 : 전역함수는 자바스크립트 어디에서든 사용할 수 있는 함수이고, 지역함수는 함수 스코프에서만 사용할 수 있는 함수이다.

 

2. 기본형 

<script>
  function 함수명1() { // 전역 함수
      자바스크립트 코드;
  } 
  
  function 함수명2() {
      function 함수명3() { // 지역 함수
      	자바스크립트 코드;
	} 
  } 
</script>

 

3. 예제 - 전역함수와 지역함수

<script>
        function myFnc() {
            alert("전역 함수");
        }

        function outerFnc() {
            function myFnc() {
                alert("지역 함수");
            }
            myFnc(); // 지역 함수 호출
        }

        outerFnc(); 
        myFnc(); // 전역 함수 호출
</script>

 

 

전역과 지역을 나누는 이유

 

1. 이유 : 프로그램을 개발할 때 전역(Global)과 지역(Local)을 나누면 충돌을 피할 수 있기 때문

예를 들어, 다른 개발자가 이미 개발해 놓은 라이브로리나 플러그인의 변수나 함수의 이름이 겹치면 충돌이 발생할 수 있기 때문에 전역과 지역을 나눈다.

 

2. 예제 - 두 개발자가 동일한 함수명을 사용한 경우

<script>
        var num = 100;
        function menu() { // 개발자 A가 작성한 코드
            num += 100;
            alert(num);
        } 
        menu(); // 100
        // 100이 출력되는 이유 : 두 개발자가 작성한 함수의 이름이 겹쳐서
        // 먼저 만들어진 개발자 A의 코드가 제거되고 개발자 B의 함수가 호출됨 
        function menu() { // 개발자 B가 작성한 코드
            alert(num);
        }
</script>

 

 

즉시 실행 함수 

 

1. 의미 : 위 예제와 같은 불상사를 막기 위해서는 지역 함수를 사용하여 함수를 선언하면 된다. 즉시 실행 함수는 지역 함수 선언에 사용하면 함수 선언과 동시에 함수를 호출할 수 있게 된다.

 

2. 기본형

<script>
	(function() {
		var 변수명; // 지역 변수
        function() 함수명() { // 지역 함수
        	자바스크립트 코드;
        }
	}());
</script>

 

3. 예제 - 즉시 실행 함수에 지역 변수와 지역 함수 선언하여 충돌 방지

    <script>
        //즉시 실행 함수 a
        (function() {
            //즉시 실행 함수 a내에서만 유효한 지역 변수 및 지역 함수
            var num = 100;
            function menu() {
                num += 100;
                alert(num);
            }
            menu();
        }());   

        //동일한 메소드 명이 존재할 때 나중에 선언된 메소드가 호출됨
        //즉시 실행 함수 b
        (function() {
            //즉시 실행 함수 b내에서만 유효한 지역 변수 및 지역 함수
            var num = 100;
            function menu() {
            alert(num);
            }
            menu();
        }());  
    </script>

 

 

 

반응형