2020. 10. 3. 15:11ㆍFrontend
Interview Section은 FrontEnd Interview Question에 대한 QnA를 다룹니다.
Q. What's the difference between a variable that is: null, undefined 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
developer.mozilla.org/en-US/docs/Glossary/null
developer.mozilla.org/en-US/docs/Glossary/undefined
'Frontend' 카테고리의 다른 글
[Javascript] let, var, const (0) | 2020.10.04 |
---|---|
[Javascript] 함수 호이스팅 (0) | 2020.10.03 |
[Javascript] 프로토타입 상속이란? (0) | 2020.10.02 |
[Javascript] Attribute vs Property (1) | 2020.09.29 |
[Javscript] 함수 스코프 vs 블록 스코프 (0) | 2020.09.29 |