What is Primitive & Non-Primitive (Reference) Types?
Primitive types are basic data types that represent single values. They are immutable, meaning their values cannot be changed once they are created.
- String
- Number
- Boolean
- Null: Intentional absence of any object value.
- Undefined: Uninitialized variable or missing property.
- Symbol: Introduced in ES6, represents a unique identifier.
Non-primitive types are more complex data structures that can hold multiple values and are mutable. They are called “reference types” because variables of these types store references to their actual data in memory.
- Object
- Array
- Function
function getPrimitiveType(variable) {
if (variable === null) return null;
if (variable === undefined) return undefined;
return typeof variable;
}
console.log(getPrimitiveType(22)); // number
console.log(getPrimitiveType("a")); // string
console.log(getPrimitiveType(true)); // boolean
console.log(getPrimitiveType(null)); // null
console.log(getPrimitiveType(undefined)); // undefined
console.log(getPrimitiveType(Symbol("foo"))); // symbol
function getNonPrimitiveType(variable) {
const typeString = Object.prototype.toString.call(variable);
return typeString.slice(8, -1);
}
console.log(getNonPrimitiveType({})); // Object
console.log(getNonPrimitiveType([])); // Array
console.log(getNonPrimitiveType(function () {})); // Function
console.log(getNonPrimitiveType(new Date())); // Date