정의되지 않은 변수 (Undefined Variable)
프로그래밍을 할 때 가장 많이 겪는 에러 중 하나가 바로 ‘정의되지 않은 변수’ 에러입니다. 이 에러는 변수가 초기화되지 않았거나 변수 이름을 잘못 입력했을 때 발생합니다. 이번 포스팅에서는 정의되지 않은 변수 에러를 어떻게 방지하고 해결할 수 있는지에 대해 알아보겠습니다.
1. 변수 초기화
변수 초기화는 변수를 처음 생성할 때 해당 변수에 값을 할당하는 것을 말합니다. 만약 변수가 초기화 되지 않았다면, 해당 변수를 사용하려고 할 때 정의되지 않은 변수 에러가 발생할 수 있습니다. 따라서 변수를 선언할 때 값을 할당해주는 것이 좋습니다. 다음은 변수 초기화의 예시입니다.
let name = "John";
변수 name 을 선언할 때 값 “John” 을 할당해주었습니다.
2. 변수 이름 입력
변수 이름을 잘못 입력하는 것도 정의되지 않은 변수 에러를 발생시키는 원인 중 하나입니다. JavaScript 는 대소문자를 구분하기 때문에, 변수 이름을 정확히 입력해줘야 합니다. 예를 들어, 다음과 같은 변수를 선언했다면,
let Name = "John";
Name 이라는 변수를 사용할 때, 첫 글자를 소문자로 작성해 주지 않는다면, 정의되지 않은 변수 에러가 발생할 수 있습니다.
3. 변수 스코프
변수 스코프란 변수의 유효 범위를 의미합니다. 같은 이름의 변수는 블록 내부와 외부에서 동시에 사용할 수 없습니다. 다음의 예시를 보면,
let name = "John";
if(true) {
let name = "Sarah";
}
console.log(name); // "John"
조건문 내에서 name 이란 변수를 다시 선언하였기 때문에, if 문 내에서만 유효하며, if 문 외부에서는 다른 변수로 인식됩니다. 따라서 “John” 이란 값이 출력되는 것입니다.
4. 변수 호이스팅
변수 호이스팅은 변수가 선언되기 전에 사용될 수 있다는 것을 의미합니다. 다음은 변수 호이스팅이 발생하는 예시입니다.
console.log(name); // undefined
let name = "John";
정의되지 않은 변수 에러가 아닌 undefined 가 출력되는 것을 볼 수 있습니다. 이는 변수가 먼저 메모리에 공간을 확보한 후, 코드가 실행되기 때문입니다.
5. 변수 사용 전 확인
마지막으로 변수를 사용하기 전에 반드시 선언되어 있는지 확인해야 합니다. 정의되지 않은 변수를 사용하면, 에러가 발생하며 코드 실행이 중지됩니다.
console.log(age); // Uncaught ReferenceError: age is not defined
위 코드에서 age 라는 값이 정의되어 있지 않기 때문에, 정의되지 않은 변수 에러가 발생합니다.
Conclusion
정의되지 않은 변수 에러는 실수로 발생하기 쉽기 때문에, 지속적인 주의가 필요합니다. 변수 초기화와 이름 입력, 변수 스코프와 호이스팅 그리고 변수 사용 전 확인하는 것 등의 방법을 사용하여 에러를 방지하고 코드를 효율적으로 작성할 수 있습니다. 이러한 작은 에러들은 큰 에러가 될 가능성이 있기 때문에, 프로그램의 흐름을 원활히 진행하기 위해서는 항상 주의해야 합니다.