JavaScript's typeof operator is useful, but it is not a real type system. It exposes a coarse runtime tag, and that coarseness is exactly where the confusion starts.