var

정민교·2023년 7월 8일
0

javascript

목록 보기
1/16

✔️var

📌var변수의 스코프

var 키워드로 선언한 변수는 블록 스코프를 따르지 않습니다. 함수 스코프만 따릅니다.

var변수의 스코프는 전역 스코프 혹은 함수 스코프입니다.

📌var변수의 중복 선언

var키워드로 선언한 변수는 중복으로 선언이 가능합니다.

var키워드로 중복 선언한 선언문은 무시됩니다.

중복 선언과 동시에 초기화를 진행한다면, 값만 덮어씌워집니다.

var user = "Pete";

var user = "John"; // 이 "var"는 아무것도 하지 않습니다(이전에 이미 선언됨).
// ...에러 또한 발생하지 않습니다.

alert(user); // John

📌var hoisting

var 키워드로 선언한 변수는 호이스팅됩니다.

호이스팅은 선언문이 코드 최상단으로 끌어올려지는 현상을 말합니다.

엄밀히 말하면 var 선언문 뿐만 아니라 모든 선언문이 hoisting됩니다. hosting 동작 방식에 약간의 차이가 존재하지만 여기서 언급하지 않겠습니다.

var변수는 호이스팅 때문에 코드 최상단으로 끌어 올려지며, undefined로 우선 초기화 됩니다.

var변수는 할당문에 도달하게 될 때 값이 할당됩니다.

👉ex1

function sayHi() {
  var phrase; // 선언은 함수 시작 시 처리됩니다.

  alert(phrase); // undefined

  phrase = "Hello"; // 할당은 실행 흐름이 해당 코드에 도달했을 때 처리됩니다.
}

sayHi();

👉ex2

function sayHi() {
  phrase = "Hello"; //

  if (false) {
    var phrase; // 블록스코프를 따르지 않기 때문에 var 선언문은 최상단으로 끌어올려지며, "Hello"가 할당됩니다.
  }

  alert(phrase);
}
sayHi();
profile
백엔드 개발자

0개의 댓글