반응형

 

var val = 10; // 전역 변수 num을 선언

function changeValue() {
    console.log(val); // 10
    val = 20; // 전역 변수 함수 내부에서 변경
}

changeValue();  
console.log(val); // 20
var val = 10; // 전역 변수 num을 선언

function changeValue() {
    console.log(val); // undefined
    var val = 20; // 지역 변수 값 초기화
}

changeValue();  
console.log(val); // 10
var의 호이스팅

let, const는 아니지만 var는 변수 선언 시 undefined로 정의함

 

*changeValue 함수 내에서 일어나는 일* == 호이스팅

var val; // undefined

console.log(log); // undefined

val = 20;

 

  1. 전역 스코프에서 var val = 10;가 선언되고 초기화됩니다. val 변수는 10의 값을 가집니다.
  2. changeValue(); 함수가 호출됩니다.
  3. changeValue 함수 내에서 console.log(val)이 실행될 때 val 변수가 호이스팅되고 함수 스코프 내에서 선언되었습니다. 그러나 아직 초기화되지 않았으므로 undefined가 출력됩니다.
  4. 마지막으로 함수 내에서 var val = 20;이 실행되고, val 변수는 20으로 초기화됩니다.

 

var val = 10; // 전역 변수 num을 선언

function changeValue() {
	var val = 20; // 지역변수 초기화
    console.log(val); // 20
    
}

changeValue();  
console.log(val); // 10
반응형