Javascript é uma linguagem fracamente tipada. Nesse caso o interpretador da linguagem realiza a inferência de tipo, sem a mesma estar explicitamente declarada como nas linguágens fortemente tipadas.
É uma linguagem client-side, porém já existem versões server side como o Node.Js.
Sim, o javascript oferece alguns elementos de programação funcional como as funções: Call/Apply, Bind, Map, Filter.
Sim, o javascript interage com o DOM(Document Object Model).
Na realidade, ela ser uma linguagem fracamente tipada significa que, além da linguagem não ter a capacidade de detectar erros em operações de tipos diferentes, ela retorna um resultado nas operações de tipos diferentes (ao contrário de python e java). Ex:
'1' + 1 // o resultado será '11'
'1' + true // o resultado será 1true
A não necessidade de se estar explicitamente declarada (como o Lazaro comentou) é o conceito de dinamicamente tipada, que o Javascript também é (ao contrário de java e C, por exemplo)