Ei, Gabriella,
> Gostaria de tirar uma dúvida: JavaScript é considerada uma linguagem fracamente ou fortemente tipada? Por quê?
Dependente de para quem você pergunta :)
Aqui em nosso curso, o combinado é que uma linguagem é fracamente
tipada se um programa bem tipado puder ter comportamento indefinido.
Nesse caso, JS é fortemente tipada, pois o comportamento de um
programa JS bem tipado é sempre bem definido. Assim, não é possível
ler ponteiro nulo, por exemplo:
const obj = null;
console.log(obj.foo); // TypeError!
Veja que isso é bem diferente de C/C++, que são fracamente tipadas. A
especificação daquelas linguagens já prevê comportamento indefinido.
Não existe isso na especificação de JS (ECMA-262). Linguagens que
seriam fracamente tipadas:
* Fortran (principalmente versões antigas)
* Ada (com muito poucas situações, e.g., UNCHECKED_CONVERSION)
Linguagens mais novas:
* Zib
* rust (no modo unsafe)
* D (em modo "unsafe")
Abraços,
Fernando