¿Es la siguiente una clasificación correcta de los diferentes tipos de valores (principales) en Javascript?
'use strict'; let a = undefined, b = false, c = 'hello', d = 2.42, e = 4, f = BigInt(272), g = Symbol('a'), h = function() {return 'hi'}, i = null, j = /123/, k = [1,2,3], l = {1: 2}; console.log(` // Undefined a. ${a} --> ${typeof a} // Primitives b. ${b} --> ${typeof b} c. ${c} --> ${typeof c} d. ${d} --> ${typeof d} e. ${e} --> ${typeof e} // New Primitives f. ${f} --> ${typeof f} g. ${g.toString()} --> ${typeof g} // Function h. ${h} --> ${typeof h} // Object (everything else) i. ${i} --> ${typeof i} j. ${j} --> ${typeof j} k. ${k} --> ${typeof k} k. ${l} --> ${typeof l} `); Además, me parece muy extraño que el valor undefined tenga el tipo undefined , pero luego el valor null tiene el tipo object . ¿Por qué el lenguaje lo define así?