Comme d'autres personnes l'ont dit, lorsque vous placez le javascript dans l'en-tête, cela retarde le rendu de la page jusqu'à ce que les scripts aient été chargés, ce qui signifie que la page peut prendre plus de temps à charger - surtout si vous téléchargez de gros fichiers scripts.
Si vous déplacez vos balises script à la fin de la page, vous vous assurerez que le navigateur télécharge les images et les feuilles de style avant les balises script et la page semblera probablement être rendue avant que les script ne commencent à s'exécuter. Cela signifie également que si vous dépendez de certaines fonctionnalités de vos script, celles-ci ne seront disponibles qu'un peu après que la page soit visible par l'utilisateur.
Si vous ajoutez des styles ou des éléments (par exemple, en changeant les champs de texte avec une forme d'éditeur plus riche), l'utilisateur pourra constater un clignotement.
Si vous ajoutez des événements de clics aux éléments, ils ne seront pas cliquables tant que les éléments eux-mêmes ne seront pas visibles.
Parfois, ces problèmes vous obligent à placer vos scripts dans la tête, d'autres fois, vous pouvez les placer dans la partie inférieure.
IMHO (complètement à l'encontre de YSlow et de beaucoup de gens intelligents) vous devriez garder vos scripts dans la balise head, et compter sur eux pour être mis en cache la plupart du temps.