용어/js

[국비][JS_용어/JAVA] 메모리 내 변수 선언과 지역변수/전역변수

줌인. 2024. 5. 21. 20:57

[변수 선언시 메모리에서 생기는 현상]

<script>
     let flag = "hello";
</script

 

random access, 아무 공간에 무작위 생성

let 메모리 공간을 확보해달라는 의미, 변수 선언을 위한 선언문
flag(변수) "hello", 즉 변수에 담긴 값을 보유한 곳, 변수의 주소 공간

 

 

[변수 이중 선언이 불가한 이유]

상기 그림처럼 flag가 두 군데 있으면, 왼쪽 flag 주소에 접근해야 할지 아니면 오른쪽 flag 주소에 접근해야 할지 모호함
(무엇을 지칭하는지 알 수 없음)

 

 

 

[지역변수 / 전역변수 선언시 메모리에서 생기는 현상]

Kor = "전역변수" / Eng = "지역변수"

전역변수 지역변수
- 프로그램이 시작될 때 생성, 프로그램이 종료될 때 소멸 - 변수 선언 블록이 실행될 때 생성되고, 블록이 종료되면 소멸

 

 

 

[지역변수 / 전역변수 차이]

<script>
    let talk = "hello1"; //전역 변수 -> 메모리 공간에 계속 살아있는 값

    for (let i=0;i<5;i++) {  //i는 지역변수 -> 해당 지역에서만 사용된다.
        console.log("현재 숫자는 ? : " + i)
    }

    //console.log("지역변수 : " + i); --> for 구문(지역)에서 벗어나서 사용이 불가피하다.
    //지역 변수는 중괄호가 실행되어야 만들어짐(영역 내)
    if (talk == "hello") {
        let kor = "안녕하세요?";
        console.log("한국어 : " + kor);
    } else {
        let eng = "hi";
        console.log("영어 : " + eng);
    }
</script>    
전역변수 지역변수
- 프로그램의 모든 범위에서 접근할 수 있는 변수
- 일반적으로 함수나 클래스 밖에서 선언
- 프로그램이 시작될 때 생성, 프로그램이 종료될 때 소멸
- 특정 블록, 함수 또는 메소드 내에서 선언된 변수로,
   해당 블록이나 함수/반복문 내에서만 유효
- 변수가 선언된 블록 내에서만 접근 가능
- 변수 선언 블록이 실행될 때 생성되고, 블록이 종료되면 소멸
∴ 프로그램 전반에서 공유되는 데이터를 저장할 때 사용 ∴  함수나 블록 내에서만 필요한 데이터를 저장할 때 사용
>> 지역변수와 전역변수가 동일한 이름을 가질 경우, 지역변수가 우선
       함수 내에서는 동일한 이름의 전역변수가 존재하더라도 지역변수가 사용

 

 

[추가로 전역변수 / 지역변수 이해하기_예시]

<script>
let kor = "안녕하세요";

    for (let i=0;i<5;i++) {
       console.log("현재 숫자는 ? : " + i)
         console.log("전역 변수 : " + kor);
     }

     if (kor == "안녕하세요") {
         console.log("한국어입니다 : " + kor);
         let eng = "hello";
         console.log("별개로 또 다른 인사말은 영어입니다 : " + eng)
    else {
          let eng = "hello"
          console.log("영어입니다 : " + eng); //지역 변수 선언
          //if {} 영역과 별개인 else {}영역 이므로 중복 선언이 가능 : 서로 다른 범위
          console.log("별개로 또 다른 인사말은 한국어입니다 : " + kor);
      }
      let eng = "안녕하세요?"; //전역 변수 선언 -> 지역변수에서 이미 선언했지만 중복 선언이 아님
      console.log(eng + ": 영어로 인사했습니다.");
      //이렇게 중복 선언이 가능하나 프로그램은 모호하게 중복된 언어를 사용하지 않도록 해야함
</script>    

 

※ url 같은 정보는 내부 캐시에서 계속해서 제공 

   ⇒ 종종 오류 발생 가능성 높음, 이에 따라 종종 캐시 지우기를 통해 새로고침하는 것이 유용

728x90