JavaScript

[JavaScript] 지역 변수 / 전역 변수 (scope)

FRDYtheme 2022. 12. 2. 10:11

지역 변수 : {} 영역 안에서만 적용

전역 변수 : 문서 전체에 적용

 

  //전역 변수
  let aLet = 10; // 블록 스코프(block scope) -> {}
  var bVar = 10; // 펑션 스코프(function scope) -> function() {}
  
  const noName1 = () => console.log(`noName1 함수 내부에 적용됨: ${bVar}`);
  // 전역 var변수 bVar의 값을 함수 내부로 전달 받을 수 있음.
  console.log(`noName1 문서 전체에 적용됨: ${bVar}`);
  // 함수 외부에도 당연히 적용 됨.
  noName1();
  
  const noName2 = () => console.log(`noName2 함수 내부에 적용: ${aLet}`);
  noName2();
  // 전역 let 변수도 함수 내부로 전달이 잘 됨.

 

전역 변수는 함수 내부에서 접근이 가능하지만

외부에서 함수 내부의 지역 변수로 접근은 불가능하다.

  let aLet = 10;
  var bVar = 10;
  
  function noName3() {
    let aLet = 30; // 블록문 내
    var bVar = 40; // 함수 내
    console.log(`내부에서만 적용되는 aLet: ${aLet} bVar: ${bVar}`);
  }
  noName3();
  console.log(`지역 변수는 해당 범위를 벗어날 수 없다. aLet: ${aLet} bVar: ${bVar}`);

 

let변수는 재선언이 불가능하지만 전역 변수와 지역 변수는 분리되어있기 때문에

함수 외부에서 전역 변수로 let을 선언했어도 함수 내부에서 let 변수의 재선언이 가능하다. 단, 내부에서만 적용.

  let aLet = 10;
  var bVar = 10;  
  
  var bVar = 100; // var는 재선언 가능
  //let aLet = 50; // let은 같은 식별자로 재선언이 불가능.
  // => let은 재할당으로 아래와 같이 작성하면 된다.
  aLet = 50;
  
  console.log(`var변수는 재선언 가능 ${bVar}, let변수는 재선언 불가능${aLet}`);

 

함수 내부에서 let이나 var 키워드를 생략하고 작성하면 전역변수가 된다.

  let aLet = 10;
  var bVar = 10;

function noName4() {
    //변수 키워드 없이 작성하면 전역변수
    aLet = 1000;
    bVar = 1500;
  }
  noName4();
  console.log(`aLet: ${aLet} bVar: ${bVar}`)

 

'JavaScript' 카테고리의 다른 글

[JavaScript] 중첩 함수/ 내부 함수  (0) 2022.12.02
[JavaScript] 즉시 실행 함수  (0) 2022.12.02
[JavaScript] 기본 연산자  (0) 2022.12.01
[JavaScript] 객체의 형 변환  (0) 2022.12.01
[JavaScript] 자료형  (0) 2022.12.01