JSFiddle - React, Tailwind, and code Playground

JavaScript

function whatIsType(variable) {
  var type = Object.prototype.toString.call(variable);
  
  switch(type) {    
    case '[object Function]':
        return "Function";
    break;
    
    case '[object Date]':
        return "Date";
    break;
    
    case '[object Error]':
        return "Error";
    break;
    
    case '[object RegExp]':
        return "RegExp";
    break;
    
    case '[object Array]':
        return "Array";
    break;
    
    case '[object String]':
        return "String";
    break;
    
    case '[object Number]':
        return "Number";
    break;
    
    case '[object Boolean]':
        return "Boolean";
    break;
    
    case '[object Null]':
        return "Null";
    break;
    
    case '[object Undefined]':
        return "Undefined";
    break;
    
    default:
      if ('length' in variable && '0' in variable) {
        return "Array-like"
      }

    	return "Object";
    break;
  }
}

console.log(whatIsType()); //Undefind
console.log(whatIsType(true));
console.log(whatIsType(null));
console.log(whatIsType(1));
console.log(whatIsType("String"));
console.log(whatIsType(function() {}));
console.log(whatIsType([]));
//console.log(whatIsType(arguments)); //Array-like
console.log(whatIsType(new Object));
function SomeClass() { };
console.log(whatIsType(new SomeClass));
var arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3  };
console.log(whatIsType(arrayLike));