Hoisting, 전역변수, 참조

크롱·2023년 8월 10일
0

JavaSrcipt

목록 보기
40/53

호이스팅

변수와 함수의 Hoisting
변수와 함수의 선언을 변수 범위 맨위로 끌어지는 것 처럼 보이는 현상

var

  console.log(이름);
  var 이름 = 'Kim';
  console.log(이름);

콘솔창에 첫째로는 undefined가 출력되고
둘째로는 Kim이 출력됩니다.
왜냐면 Hoisting 때문에!

let

하지만 let을 사용하면, 오류가뜹니다.

let 변수는 hoisting 되지만 var 변수처럼 지동으로 undefined 라는 값을 할당(일명 initialization) 해주지 않습니다.
선언과 할당 사이에 시간차가 있기 때문에 그런 현상이 일어나는 것이고 let 변수는 그래서 쓸 수 없습니다
그래서 그냥 let const 변수는 그래서 엄격하게 쓸 수 있는 변수구나 외우시면 되겠습니다.

전역변수

바깥에 있는 변수는 안쪽에서 자유롭게 사용가능합니다.
이걸 전문 개발자용어로 참조가능하다 라고 합니다만 자바스크립트에서는 이 현상을 closure라고 합니다.

window로 전역변수를 만들 수도 있는데요

 window.나이 = 20;  //전역변수만들기
 console.log(window.나이);  //전역변수사용하기
 window.나이 = 30;  //전역변수변경하기

예제

 if (true) {
    let a = 1;
    var b = 2;
    if (true) {
      let b = 3;
    }
    console.log(b);
  }

b의값은 무엇일까요?

b는 2라는 값이 출력됩니다.

let b = 3; 이 부분은 안쪽 if 내에서만 존재하는 놈,즉 { } 안에 서만 존재해서
바깥의 console.log(b)와는 무관합니다.

profile
👩‍💻안녕하세요🌞

0개의 댓글