Function expression in Javascript - Time & Space Complexity
Let's see how the time it takes to run a function expression changes as we give it more work.
We want to know how the number of steps grows when the input gets bigger.
Analyze the time complexity of the following code snippet.
const sumArray = function(arr) {
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
return total;
};
const numbers = [1, 2, 3, 4, 5];
console.log(sumArray(numbers));
This code defines a function expression that adds up all numbers in an array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that goes through each item in the array.
- How many times: Once for every element in the array.
As the array gets bigger, the function does more additions, one for each number.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The work grows directly with the number of items; double the items, double the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the input size.
[X] Wrong: "Function expressions always run instantly, so time doesn't grow with input."
[OK] Correct: The way a function is written (expression or declaration) doesn't change how many steps it takes; what matters is what the function does inside.
Understanding how loops inside functions affect time helps you explain your code clearly and shows you know how to write efficient programs.
"What if we changed the for-loop to a nested loop inside the function? How would the time complexity change?"
Practice
function expression in JavaScript?Solution
Step 1: Understand function expressions
A function expression means assigning a function to a variable so it can be used later.Step 2: Compare options
Only A way to store a function inside a variable describes storing a function inside a variable, which matches the definition of a function expression.Final Answer:
A way to store a function inside a variable -> Option BQuick Check:
Function expression = function stored in variable [OK]
- Confusing function expressions with function declarations
- Thinking function expressions run automatically
- Mixing up functions with loops
Solution
Step 1: Identify function expression syntax
A function expression assigns an anonymous function to a variable using= function() { ... }.Step 2: Check options for correct syntax
const myFunc = function() { return 5; }; usesconstwith an anonymous function and ends with a semicolon, which is correct syntax.Final Answer:
const myFunc = function() { return 5; }; -> Option DQuick Check:
Function expression syntax = variable = function() { } [OK]
- Using function declaration syntax instead of expression
- Missing semicolon at the end
- Using named function inside expression incorrectly
const greet = function(name) { return `Hello, ${name}!`; };
console.log(greet('Alice'));Solution
Step 1: Understand the function expression
The variablegreetholds a function that returns a greeting string with the given name.Step 2: Evaluate the function call
Callinggreet('Alice')returnsHello, Alice!which is printed byconsole.log.Final Answer:
Hello, Alice! -> Option CQuick Check:
Function call with 'Alice' returns greeting [OK]
- Confusing variable name with parameter
- Expecting function name in output
- Thinking function expression causes error
const add = function(a, b) {
return a + b
};
console.log(add(2, 3));Solution
Step 1: Check syntax of function expression
The function is assigned toaddusingconst, which is valid. The return statement is correct without semicolon (optional in JS).Step 2: Verify code execution
Callingadd(2, 3)returns 5 and prints it. No syntax or runtime errors occur.Final Answer:
No error, code runs correctly -> Option AQuick Check:
Valid function expression runs without error [OK]
- Thinking function expressions must be named
- Believing semicolon is mandatory after return
- Assuming const cannot hold functions
Solution
Step 1: Understand immediate function call with expression
To call a function expression immediately, you add parentheses after the function definition.Step 2: Analyze options
const double = function(n) { return n * 2; }(4); console.log(double); defines a function expression and immediately calls it with (4), assigning the result todouble. Then it logs the result. This matches the requirement.Final Answer:
const double = function(n) { return n * 2; }(4); console.log(double); -> Option AQuick Check:
Function expression called immediately with (4) [OK]
- Not calling the function immediately
- Assigning function instead of result
- Using arrow function without immediate call
Ready to prove it?
Pass the test and this pattern moves unknown
