Does any language need to have a bottom type?
Javascript has no bottom type. It does not even really have types in the sense of type theory. Instead, values are tagged with information that is called &quot;dynamic type&quot;.
Programming languages typically do not have the bottom type (it is also called the empty type) because they allow defintion by general recursion, which implies that all types are non-empty. For example, to define a value v of any type T in Java, we can do this:
static T f() { return f(); }
static T v = f();