Existem várias formas de identificar o tipo de uma variável no JavaScript, iremos compartilhar uma forma Vanilla, que até o momento nos parece funcionar para todos os casos testados
function typeOf (obj) { return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase(); } //Resultados typeOf(); //undefined typeOf(null); //null typeOf(NaN); //number typeOf(5); //number typeOf({}); //object typeOf([]); //array typeOf(''); //string typeOf(function () {}); //function typeOf(/a/) //regexp typeOf(new Date()) //date