JavaScript is a dynamically typed language. This means: variables don't have types – values/objects have types. A variable is just a label for some object. Each value/object has metadata that indicates its type.
There are a number of different JavaScript implementations that take different approaches at implementing this concept. The blob post you link mentions type tags, a popular method to discriminate primitive types. At least the V8 JavaScript engine still uses pointer tagging as part of its main object representation (see the v8-internal.h
header), but things have become much more complex. For example, V8 also uses pointer tags to encode garbage collection information. And in contradiction to what I said in the first paragraph, V8 also tags fields within objects with a type.
At least within a function, you can assume that the JS engine will be able to infer a type for each variable, either through analysis of the surrounding code or speculatively. Such information can be used to JIT-compile efficient code for the function, allowing data to be processed without having to consider type tags for each operation.