var v;
typeof v; // "undefined"
undefined는 타입의 형태를 return 하는 것이 아니라 string 타입의 “undefined” 값을 반환해준다.
var v = null;
typeof v; // "object"
null은 object이다.
var v = function(){};
typeof v; // "function"
function은 “function”이다.
var v = [];
typeof v; // "object"
array는 “object” 이다.
var v = Symbol();
typeof v; // "symbol"
symbol은 “symbol”이다.
var v = true;
typeof v; // "boolean"
boolean은 “boolean”이다.
var v = {};
typeof v; // "object"
object는 “object”이다.
var v = "Hello world";
typeof v; // "string"
string은 “string”이다
var v = 42n;
typeof v; // "bigint
bigint는 "bigint"이다. ( 무한대로 증가할 수 있는 숫자 ).
var myCatsAge = Number("n/a"); // NaN
myCatsAge === myCatsAge; // false : NaN 독립적인 값으로 취급되기 때문에 비교할때 참이 아니다.
NaN은 독립적인 값을 갖는 것으로 취급 되기 때문에 같은 값을 비교한다 하더라도 false를 리턴받는다.
isNaN(myCatsAge); // true
isNaN을 사용하면 true를 리턴 받을 수 있다.
var negaZero = -0;
negaZero === -0; // true
negaZero.toString(); // "0"
negaZero === 0; // true
negaZero < -0; // false
negaZero < -0; // false
Object.is(negaZero, -0); // true
Object.is(negaZero, 0); // false
-0 네거티브 제로는 자바스크립트에서 다루기 힘들며
Object.is를 사용해서만 참 거짓을 판명할 수 있다.
// 네거티브제로는 Math.sign을 사용할 수 없다.
Math.sign(-0); // -0
Math.sign(0); // 0
// fix
function sign(v) {
return v !== 0? Math.sign(v) : Object.is(v,-0) ? -1 : 1;
};
Use 사용할것
사용하지 말것