선언하지 않은 변수

김철회·2022년 8월 10일
0

선언하지 않은 변수

선언하지 않은 변수란 말 그대로, 변수를 선언 하지도, 값을 할당 하지도 않은 변수를 말한다.

console.log(y) // 레퍼런스 에러

console.log(x) // undefiend

var x = 1;

위처럼, y는 선언하지 않은 변수이기 때문에 참조할 수 없어 참조에러가 나오고 값이 할당되기 전에 var로 선언한 변수를 참조하게 되면 var의 초기값 undefiend를 반환한다.

선언하지 않았기 때문에 선언하지 않은 변수를 참조하는 것이 불가능한 것은 너무나도 당연한 얘기이다. 허나, 선언하지 않은 변수에 대해 아는 것이 무엇 때문에 중요할까

typeof에서의 선언하지 않은 변수

선언하지 않은 변수를 typeof로 체크하면 이상한 일이 생겨난다.

console.log(typeof y) // undefiend

console.log(typeof x) // undefiend

var x = 1;

위의 코드에서 선언하지 않은 변수 y의 타입은 undefiend이고, 아직 값이 할당 되지 않은 선언한 변수 x의 타입 또한 undefiend으로 같다.

선언하지 않은 변수를 어디에 활용할 수 있을까??

브라우저마다 지원하는 것이 조금씩 다른데, 어느 한 브라우저에서 지원하지 않는 것이 있다면 조건문을 사용하여 선언하지 않은 변수를 활용할 수 있다.


if(typeof y === "undefined") {
  y = function () { /* ... */ };
}

위에서 볼 수 있듯이, y라는 게 특정 브라우저에 없다면 y가 없을 때 y를 지정해주어서 사용하면 된다. 여기서 if문 안에서 y는 따로 var, let, const 키워드로 선언하지 않아야 전역변수로 사용할 수 있다.
자바스크립트 안에서 식별자 키워드를 사용하지 않고 변수를 할당하면 그것은 window의 객체로 등록이 된다.

profile
안녕하세요!

0개의 댓글