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") // ❌ SyntaxErrorExpresiones#
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.
2 + 35'Hola''Hola'5 > 3trueDe 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 + 3En esa única línea conviven las dos cosas: una declaración (crear la variable resultado) que contiene una expresión (2 + 3).
console.log(let nombre = 'Juan') da un SyntaxError.¿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
ifo unwhile, no puedes poner una declaración.