JavaScript has just objects and primitives. Value types stem from primitives and reference types from objects.
Numbers, strings, booleans, null, and undefined are value types in JavaScript. That means in some cases they get copied.
Arrays, objects, and functions are reference types, which means they aren't copied. If you declare one of these and change it later, you aren't changing a copy of the original but the original itself.