[Javascript] null vs undefined

2020. 10. 3. 15:11Frontend

Interview Section은 FrontEnd Interview Question에 대한 QnA를 다룹니다.

 

https://morioh.com/p/31742e003943

 

Q. What's the difference between a variable that is: nullundefined or undeclared?

 

 

A.

javascript에는 truthy와 falsy라는 개념이 있습니다. Boolean Context에서 false가 아니더라도 false로 인정되는 값들을 의미하는데 javascript에서 falsy로 인정되는 값은 다음과 같습니다. 

false, 0, -0, 0n (Bigint), "", null, undefined, NaN

 

조건문에 넣으면 False로 간주되는 성질때문에 null과 undefined는 종종 비슷한 것으로 해석될 수 있습니다. 하지만 둘은 엄연히 다른 개념입니다. 

 

 

null

null은 자바스크립트에서 "값이 없음"을 명시적으로 나타내기 위해서 사용합니다. 즉 null이라고 명시적으로 할당해준 경우에만 null 값을 갖게 되는 것입니다. 자바스크립트는 절대로 자동으로 null이라는 값을 변수에 할당하지 않습니다. 또한 자바스크립트에서 null은 원시타입(primitive type)으로 간주되지만 null의 타입은 Object입니다. 

 

따라서 null은 변수를 생성한 후 의도적으로 그 값을 비우기 위해 사용하는 값입니다. 

 

let obj = null;
typeof null // object

 

 

undefined

undefined는 자바스크립트에서 "선언하고 값을 할당하지 않았을 때" 변수가 초기에 갖는 값입니다. undefined도 null과 같이 falsy로 간주되어 "==" 를 사용하여 둘을 비교하게 되면 true가 할당됩니다. 하지만, object타입을 갖는 null과 달리 undefined는 완전한 원시타입이기 때문에 undefined의 타입은 undefined입니다.

 

let obj; // undefined;
typeof undefined; // undefined;

 

 

Reference

developer.mozilla.org/en-US/docs/Glossary/Falsy

 

Falsy

A falsy (sometimes written falsey) value is a value that is considered false when encountered in a Boolean context.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Glossary/null

 

Null

In computer science, a null value represents a reference that points, generally intentionally, to a nonexistent or invalid object or address. The meaning of a null reference varies among language implementations.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Glossary/undefined

 

undefined

undefined is a primitive value automatically assigned to variables that have just been declared, or to formal arguments for which there are no actual arguments.

developer.mozilla.org

 

반응형