Saltar al contenido principal
02Estructuras de control

Expresiones y Declaraciones

Clase 4 de 63 min de lectura

¿Por qué puedes hacer console.log(2 + 3) pero no console.log(let nombre = 'Juan')? La respuesta está en dos palabras que vas a escuchar durante todo el curso: expresiones y declaraciones.

Al principio pueden sonar a teoría aburrida, pero son clave para entender cómo funciona JavaScript y por qué algunos códigos dan error.

Declaraciones#

Las declaraciones son sentencias que crean una variable, una función o una clase. Podríamos decir que son como las instrucciones que le damos a JavaScript para que haga algo.

Por ejemplo, una declaración de variable le da un nombre y un valor a una variable:

let nombre = 'Juan'

Esta línea hace algo (crea la variable), pero no produce ningún valor. Por eso no la puedes meter dentro de un console.log. Si lo intentas, obtendrás un error:

console.log(let nombre = "Juan") // ❌ SyntaxError

Expresiones#

Las expresiones son fragmentos de código que producen un valor. Pueden ser tan simples como un número o una cadena de texto, o tan complejas como una operación matemática, la evaluación de varios valores o la llamada a una función.

El truco para reconocerlas: escríbelas en la consola. Si te devuelve un valor, es una expresión.

Consola
Escribes:2 + 3
Devuelve:5
Escribes:'Hola'
Devuelve:'Hola'
Escribes:5 > 3
Devuelve:true

De hecho, lo que guardas en las variables son expresiones. Aquí la expresión 2 + 3 se evalúa primero y su resultado, 5, se guarda en la variable resultado:

let resultado = 2 + 3

En esa única línea conviven las dos cosas: una declaración (crear la variable resultado) que contiene una expresión (2 + 3).

Infografía
Declaraciones y expresiones
5.Una declaración no produce ningún valor, así que console.log(let nombre = 'Juan') da un SyntaxError.
Paso 5 de 5

¿Por qué es importante la diferencia?#

Porque no puedes usar una declaración donde JavaScript espera una expresión.

Ya conoces las estructuras de control if y while. Entre sus paréntesis, las dos esperan una expresión que se evalúe a un valor booleano, así que no puedes poner ahí una declaración:

// ❌ Ambos códigos están mal y sirven para// ilustrar que no debes usar declaraciones// cuando espera expresionesif (let nombre = "Juan") { // ❌ SyntaxError  console.log("Hola, Juan")}while (let i = 0) { // ❌ SyntaxError  console.log("Iteración")  i = i + 1}

Cuando veas un SyntaxError de este estilo, pregúntate: ¿estoy poniendo algo que no produce un valor donde JavaScript necesita uno?

En resumen

  • Una declaración crea algo (una variable, una función, una clase) pero no produce un valor.
  • Una expresión siempre produce un valor: 2 + 3, 'Hola', edad >= 18, la llamada a una función…
  • Lo que guardas en una variable es el resultado de una expresión.
  • Donde JavaScript espera una expresión, como en la condición de un if o un while, no puedes poner una declaración.