코드/JavaScript

undefined와 null의 차이

juundev 2024. 5. 17. 15:29

자바스크립트의 '없음'을 나타내는 값은 undefined와 null로 두 가지가 있습니다.

두 값의 의미는 같은 것 같지만 미세하게 다르고, 사용하는 목적 또한 다릅니다.

 

Undefined

undefined는 사용자가 명시적으로 지정할 수도 있고, 자바스크립트 엔진이 자동으로 부여하는 경우도 있습니다.

 

다음은 자바스크립트 엔진이 자동으로 undefined를 부여하는 경우는 세 가지 경우입니다.

// 값을 대입하지 않은 변수, 즉 데이터의 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
var a;
console.log(a) // undefiend

// 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때
var obj = { a: 1};
console.log(obj.b); // undefined

// return 문이 없거나 호출되지 않는 함수의 실행 결과
var func = function() {};
var c = func();
console.log(c);  // undefined

 

 

Null

null은 '비어있음'을 명시적으로 나타내는 용도로 만들어진 데이터 타입입니다.

위의 undefined와 '비어있음'을 나타내는 의미는 같지만 '비어있음'을 나타내고자 하는 경우에는 null을 사용하는 것이 권장되고, 자바스크립트 엔진이 자동으로 '비어있음'을 부여하는 경우에는 undefined가 자동으로 부여될 것입니다.

 

즉 '비어있음'을 명시하고자할 때에는, 해당 용도로 만들어진 데이터 타입인 null을 사용하자가 핵심입니다.

 

추가로 null은 한 가지 주의할 점이 있는데, null의 type은 object라는 자바스크립트 자체 버그입니다.

따라서 어떤 변수의 값이 null인지 여부를 판단하기 위해서는 typeof 대신 일치 연산자(===)를 사용해야 정확히 알 수 있습니다.

var n = null;

console.log(n === undefined); // false
console.log(n === null); // true

 

 

코어 자바스크립트: 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍을

공부하며 이해한 내용을 기반으로 정리한 게시글입니다.

'코드 > JavaScript' 카테고리의 다른 글

자바스크립트 클래스  (0) 2024.05.29
자바스크립트 프로토타입  (0) 2024.05.24
클로저  (0) 2024.05.22
콜백함수 (Callback)  (0) 2024.05.17
얕은 복사와 깊은 복사  (0) 2024.05.17