Sentencias vs expresiones en JavaScript

Hoy hablamos de dos conceptos fundamentales de la programación, y en particular en JavaScript: la diferencia entre sentencias (statements) y expresiones (expressions).

Lo primero y más importante: una expresión es siempre parte de una sentencia. Incluso si la sentencia consiste únicamente en una expresión.

En este artículo vamos a ver:

  • Qué es una sentencia
  • Qué es una expresión
  • Conclusión

 

Qué es una sentencia

Cuando escribimos programas en último término lo que hacemos es dar instrucciones.

Cada linea que escribimos (salvo unas cuantas excepciones) no es más que una orden, una instrucción, que damos para que se lleve a cabo alguna acción. Es por eso que sentencia e instrucción suelen utilizarse para refererirse a lo mismo.

Otra definición de sentencia es: una sentencia es una unidad completa de ejecución.

En la mayoría de lenguajes colocamos un punto y coma al final de cada sentencia. JavaScript no es una excepción aunque el motor de JavaScript lo hace por nosotros si por comodidad o estética decidimos no ponerla.

Todo esto son sentencias:

let declaredVariable; // una declación de una variable es una sentencia
let otherVariable = 0; // una declaración con asignación también es una sentencia
function unaFuncionCualquiera() { // una declaración de función es una sentencia
}
if(true){} // un if es una declaración
2+3; // cualquier expresión simple o compuesta es una sentencia
5; // incluso una expresión simple es una sentencia en JavaScript

Como puedes ver, las sentencias “hacen cosas”. Es algo parecido a las frases de las lenguas (“Limpia los platos”). Y siempre contienen 1 o más expresiones.

 

Qué es una expresión

De una manera simplificada, una expresión devuelve un valor. Ejemplo de expresión son:

2+2
true
true && false
functionCall() // lo que devuelva la función
declaredVariable // cualquiera que sea el valor actual de la variable
declaredVariable = 'new value' // una asignación también es una expresión en JS porque devuelve el valor asignado

También esto son expresiones:

"foo"
{foo:'bar'}
[1,2,3,4]
53

Como puedes ver, estas expresiones no son variables, ni constantes, ni llamadas a funciones, ni asignaciones.

Son el caso más simple de expresión porque representan directamente a su valor. A estas expresiones las llamamos literales.

Pues bien, incluso una expresión literal puede ser una sentencia:

3;

Esto es una sentencia (he escrito el punto y coma para remarcarlo). Es una sentencia inútil, pero es importante saberlo para entender el lenguaje en profundidad.

Y es muy útil cuando queremos utilizar y entender librerías como React.

 

Conclusión

  • Un programa consiste en una serie de sentencias.
  • Las sentencias contienen expresiones.
  • Las expresiones siempre son evaluadas y retornan un valor. Por tanto, las expresiones pueden utilizarse en cualquier contexto en el que el compilador espera un valor

En futuras publicación ahondaré en el tema. No dudes en dejarme tus comentarios.

9

2 thoughts on “Sentencias vs expresiones en JavaScript”

Leave a Reply to DnrjShugh Cancel reply