Primitive data types in Javascript - Time & Space Complexity
We want to understand how fast operations on primitive data types run in JavaScript.
How does the time to work with these simple values change as we use more or bigger data?
Analyze the time complexity of the following code snippet.
const a = 5;
const b = 'hello';
const c = true;
const sum = a + 10;
const greeting = b + ' world';
const isFalse = !c;
console.log(sum, greeting, isFalse);
This code uses simple operations on primitive data types: numbers, strings, and booleans.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Simple arithmetic and string concatenation on primitive values.
- How many times: Each operation runs once, no loops or repeated traversals.
Operations on primitive types happen instantly and do not grow with input size here.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 3 |
| 100 | 3 |
| 1000 | 3 |
Pattern observation: The number of operations stays the same no matter how big the input is.
Time Complexity: O(1)
This means the time to do these operations stays constant, no matter the input size.
[X] Wrong: "String concatenation always takes longer as strings get bigger."
[OK] Correct: In JavaScript, simple concatenation of small strings is very fast and treated as a single step here; only very large strings or repeated concatenations in loops cause noticeable time growth.
Understanding that primitive operations run in constant time helps you explain why some code is fast and others slow, a key skill in coding interviews.
"What if we replaced string concatenation with joining an array of 1000 strings? How would the time complexity change?"
Practice
Solution
Step 1: Recall JavaScript primitive types
JavaScript primitive types include string, number, boolean, undefined, null, symbol, and bigint.Step 2: Identify non-primitive types
Object is not a primitive type; it is a complex data type used to store collections.Final Answer:
object -> Option AQuick Check:
Primitive types exclude objects [OK]
- Confusing object with primitive types
- Thinking null is an object
- Mixing symbol with object
Solution
Step 1: Check string declaration syntax
Strings must be enclosed in matching quotes: single ('') or double ("") or backticks (``).Step 2: Validate each option
let name = 'John'; uses single quotes correctly. let name = John; lacks quotes. Options C and D have unclosed quotes.Final Answer:
let name = 'John'; -> Option BQuick Check:
Strings need matching quotes [OK]
- Missing quotes around string
- Using mismatched quotes
- Forgetting semicolon (optional but good)
console.log(typeof 123); console.log(typeof 'hello'); console.log(typeof true);
Solution
Step 1: Understand typeof operator
typeof returns the type of a value as a lowercase string like "number", "string", or "boolean".Step 2: Check each console.log output
typeof 123 is "number", typeof 'hello' is "string", typeof true is "boolean".Final Answer:
"number", "string", "boolean" -> Option AQuick Check:
typeof returns lowercase type names [OK]
- Capitalizing type names
- Using short forms like 'num'
- Confusing typeof output with values
let value = null; console.log(typeof value);
Solution
Step 1: Understand typeof null behavior
typeof null returns "object" due to a historical JavaScript bug.Step 2: Identify confusion
This is confusing because null is a primitive but typeof shows "object".Final Answer:
typeof null returns 'object' which is confusing -> Option CQuick Check:
typeof null is 'object' (quirk) [OK]
- Expecting 'null' from typeof
- Thinking null is an object
- Assuming code throws error
Solution
Step 1: Understand number limits in JavaScript
The number type can safely represent integers only up to 2^53 - 1.Step 2: Identify type for large integers
bigint is designed to store integers larger than the safe limit without losing precision.Final Answer:
bigint -> Option DQuick Check:
Use bigint for very large integers [OK]
- Using number for very large integers
- Using string instead of bigint
- Confusing symbol with number types
Ready to prove it?
Pass the test and this pattern moves unknown
