Lesson 1.2

Imperative vs. Declarative

If you are learning JavaScript or diving into frameworks like React, Vue, or Svelte, you have almost certainly encountered the terms "Imperative" and "Declarative." These aren't just academic buzzwords; understanding the difference is crucial to writing cleaner, more maintainable code. In modern UI development, shifting your mindset from imperative to declarative is often the biggest hurdle to overcoming the learning curve.

At its core, the difference is simple:

  • Imperative programming is like micromanaging. You tell the computer exactly how to do something, step-by-step.
  • Declarative programming is like being a project manager. You tell the computer what result you want, and let it figure out the implementation details.

Let's test your knowledge with a quick 5-question quiz.

What you'll learn
  • The fundamental difference between imperative and declarative programming
  • How to identify imperative and declarative code
  • Why React is declarative
  • Practical examples of both approaches
  • How to think declaratively in React
1

Question 1: The Fundamental Definition

Imperative programming is focused on what you do, and declarative programming is focused on how you do it.

True or False?

True

False

2

Question 2: Identifying Declarative Code

Select all traits that apply to code that is declarative:

Select all that apply:

Is often an abstraction over imperative code

Is typically context-independent

Is written primarily for humans, not computers

Emphasizes how code executes

3

Question 3: Identifying Imperative Code

Select all traits that apply to code that is imperative:

Select all that apply:

Relies on context, making it difficult to reuse

Gives procedural instructions on how to do something

Is usually easily understood at a glance

Is explicit about the changes it wants to make

4

Question 4: React and the Declarative Paradigm

What makes React "Declarative"? Select all that apply.

Select all that apply:

It's easy to manipulate the DOM manually

It describes what the UI is based on state

It allows you to trace the code flow easily as it runs

It is an abstraction over imperative code

5

Question 5: The Code Snippet Test

Would the following code be considered imperative or declarative?

javascript
const container = document.getElementById("container")
const btn = document.createElement("button")

btn.className = "btn active"
btn.onclick = function() {
  // Using regular function to access 'this'
  if (this.classList.contains("active")) {
    this.classList.remove("active")
    this.classList.add("inactive")
  } else {
    this.classList.remove("inactive")
    this.classList.add("active")
  }
}

container.appendChild(btn)
Imperative x Declarative

Imperative

Declarative