JavaScript Fundamentals · Final Project · Lesson 47 of 48
Building and Testing
Concept
Building and Testing
Combine variables, functions, conditions, and loops from this course into one working program, then test it with different inputs.
Testing a few edge cases on purpose — an empty array, a negative number, an unusually large input — catches far more bugs than only testing the input you expect.
By the end of this lesson
- Explain the core idea behind Building and Testing.
- Predict output before running a change.
- Test one realistic and one unusual input.
- Use the result to make the next decision.
How to study this page
- 1. Read one concept.
- 2. Change the example.
- 3. Run, compare, and explain.
- 4. Complete the challenge below.
ExampleRunnable
function average(scores) {
const total = scores.reduce((sum, s) => sum + s, 0);
return total / scores.length;
}
console.log(average([80, 90, 100]));Try it Yourself »Guarding against an empty array
function average(scores) {
if (scores.length === 0) return 0;
return scores.reduce((sum, s) => sum + s, 0) / scores.length;
}Note: Without this guard, average([]) would divide by zero and return NaN instead of a sensible default.
Self-check before continuing
Without looking at the example, describe what changes when you modify one input in Building and Testing. Then reopen the editor and prove your explanation with a small test.
You are ready to continue when you can predict, test, and explain the result.
Your turn
Extend the average function to also return a letter grade based on the result.
Loading editor…
Console