'undefined'에 해당되는 글 2건

  1. 2022.04.11 자바스크립트 값 변환, Falsy 비교
  2. 2022.04.11 자바스크립트 값 변환, 객체 -> 비객체
반응형

 

"0" == null;
"0" == undefined;
"0" == false; // true -- 헐
"0" == NaN;
"0" == "0";
"0" == "";

false == null;
false == undefined;
false == NaN;
false == 0; // true -- 헐
false == ""; // true -- 헐
false == []; // true -- 헐
false == {};

"" == null;
"" == undefined;
"" == NaN;
"" == 0; // true -- 헐
"" == []; // true -- 헐
"" == {};

0 == null;
0 == undefined;
0 == NaN;
0 == []; // true -- 헐
0 == {};

" "와  NaN은 전혀 동등할 만한 값들이 아니며 실제로도 느슨한 동등 비교 시 강제변환되지 않는다. 한편, "0"과 0은 느슨한 동등 비교 시 강제변환된다.

" "과 0은 분명히 다른 값이며 같은 값으로 취급할 경우 또한 거의 없기 때문에 강제변환은 문제가 있다.

반응형
반응형

Unboxing은 == 알고리즘의 ToPrimitive 강제변환과 관련있다.

 

Unboxing은 == 알고리즘의 ToPrimitive 강제변환과 관련있다.

 

null와 undefined는 객체 래퍼가 따로 없으므로 박싱할 수 없다. 그래서 Object(null)는 Object()로 해석되어 그냥 일반 객체가 만들어 진다.

NaN은 해당 객체 래퍼인 Number로 박싱되지만, == 를 만나 언박싱되면 결국 조건식은 NaN == NaN 이 되어 (NaN은 자기 자신과도 같지 않으므로) 결과는 false다.

반응형