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).

La mayoría de autores que tratan el tema se limitan a decir que podemos usar una expresión en cualquier lugar donde se espera una sentencia, pero no a la inversa. En mi opinión, esto no da demasiada luz para entender qué son y en qué se diferencian.

Lo primero y más importante: una expresión es siempre parte de una sentencia. Incluso si la declaración 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 que me gusta 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 asignació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.

3

2 comentarios en “Sentencias vs expresiones en JavaScript”

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable Xavier Lopez .
  • Finalidad Moderar los comentarios.
  • Legitimación Tu consentimiento.
  • Destinatarios IONOS.
  • Derechos Acceder, rectificar y suprimir los datos.
  • Información Adicional Puedes consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies, puedes ver aquí la Política de Cookies