Working with Reference Types in JavaScript


JavaScript has both primitive and reference types. It has three primitive types: string, numeric, and boolean. Internally, these are small and fixed-sized collection of bytes that are easily and predictably manipulated at the low (primitive) levels of the JavaScript interpreter. Example of strings are ‘This is a string’ and “This is another string”. Numeric values – 1, and 3.1416. Boolean values – true or false.  On the other hand, reference types are different. They include objects (including JS built-in objects), Arrays, and functions. Essentially, they can have any number of properties or elements with various types (both primitives and references), so they cannot be manipulated as easily as fixed-size primitive values can.

When working with references, everything is “by reference”.  Here I will use the term “reference variable” to mean a variable of reference type, e.g., Object. When you copy reference variables, pass them as arguments to a function, and compare against each other, it is always “by reference”.

Copy by Reference


Pass by Reference


Compare by Reference