Hoisting

아래와 같은 코드가 있다고 하자.

function myfunction(){
  var name = 'kim'
}

var address = 'suwon'  // 1.

이때 Javascript는 아래와 같이 해석한다.

var address;

function myfunction(){
  var name = 'kim'
}

address = 'suwon'

처음의 1번부분에서 새로운 변수를 만나면 변수의 선언을 맨위로 끌고와 해석한다.

따라서 아래와 같은 상황에서 에러가 발생하지 않고

console.log(name);

var name = 'kim';

console.log(name);

처음에 undefined가 출력된다.(let이나 Const는 해당X)

또 동시에 변수를 선언할 수 있다.

var name = 'kim', age = 20, address = 'suwon';

전역변수

모든 곳에서 쓸 수 있는 변수

var age = 20; // 전역변수
window.name = 'kim' // 함수도 가능. 이 방법을 권장한다.

function myfunction(){
  var name = 'kim' // 지역변수 {}안에서만 사용 가능
}

참조

참조할 수 있는 변수에 관해.

var age = 20;

function myfunction(){
  console.log(age)
}

에서 바깥쪽에 있는 age를 참조한다.