Então Gabi geralmente declarações de variáveis, onde quer que elas ocorram, são processadas antes que qualquer outro código seja executado. Então
atribuir um valor a uma variável não declarada anteriormente implica em criar uma variável global (ela se torna uma propriedade do objeto global) quando a atribuição é executada.
Por exemplo :
Variáveis declaradas estão relacionadas com o contexto de execução quando elas são criadas (por exemplo, uma função, objeto). Por outro lado, as variaveis não declaradas sempre são globais, então quando as váriáveis não são declaradas elas não existem até quando o código atribuir um valor a ela , ou seja uma variável não declarada são configuráveis (por exemplo , podem ser excluídas ).
Devido essas diferenças, é recomendado sempre declarar as variáveis, independentemente se as variáveis estão em escopo de função ou escopo global , sendo assim quando você declara uma váriavel você evita um resultado inesperado .
Espero ter ajudado.. :)