En este artículo vamos el motivo por el que JavaScript es un lenguaje de tipado débil y dinámico. Ya hablamos en el artículo anterior de Introducción a JavaScript que nos encontrábamos ante un lenguaje interpretado. Además de ser interpretado, JS tiene la peculiaridad de que es un lenguaje de programación de tipado débil, y dinámico.

¿Tipado débil y dinámico?

¿A qué nos referimos con tipado débil y dinámico?

¿Por qué JavaScript es de tipado débil?

Si nosotros declaramos una variable en JavaScript, a diferencia de otros muchos lenguajes únicamente le definimos let o var (veremos sus diferencias en otro artículo) junto a su nombre y finalmente le asignamos valor.

Un ejemplo de la sintaxis correcta de una declaración de una variable sería:

let variable1 = “Hola”;

O bien:

var variable2 = “Mundo”;

Si por ejemplo imprimimos ambas variables desde JSBIN.com por la consola con console.log(nombreVariable); vemos que esto funciona correctamente:

Un lenguaje de programación es de tipado débil cuando no requiere un tipo de dato al declarar una variable.

¿Por qué JavaScript es de tipado dinámico?

Hasta ahora, hemos imprimido el valor de las variables, pero no el tipo de dato. Si miramos el tipo de dato actual con typeof podremos ver que actualmente tenemos dos strings. Vamos a verlo:

Si ahora más abajo modificamos los valores de las variables a otro tipo de dato, podemos ver como el tipo de dato cambia sin problema y que podemos cambiarlo. Por tanto, este dinamismo en las variables nos sirve para afirmar que JS tiene un tipado dinámico.

El tipado débil o dinámico suele depender del punto donde se realiza la fase de compilación del programa. Si se realiza el proceso de compilación suele ser de tipado estático. En cambio, si se realiza en fase de ejecución (mientras se ejecuta) suele ser de tipado dinámico. 

Entonces, JS al ser un lenguaje que se ejecuta en fase de ejecución, tiene la característica de ser un lenguaje de tipado dinámico.

Espero que ahora os queden mucho más claras ambas características de JavaScript ¡Nos vemos Javascripteros!