1 и 2 о местоположении тега. 3 может применяться и к 1 и 2.
Кроме того, вы можете иметь JavaScript в обработчике события атрибутов, например, так:
<button onclick="alert(1)">pressme</button>
в довершение, вы также можете иметь JavaScript в URL, в течение пример ссылка:
<a href="javascript: alert(1)">click me</a>
Просто торчащий ваши примеры: в первую очередь, это, как правило, хорошая идея, чтобы использовать внешние файлы сценарии, загрузив с компонентом Src в тегах. Это позволяет браузеру кэшировать скрипт, который позволяет загрузке страницы быстрее после начальной загрузки страницы. это особенно верно, если вы используете такие вещи, как jQuery, и загружаете их из общедоступной сети доставки Conent (например, google ajax api см.: http://code.google.com/apis/ajaxlibs/documentation/)
Что касается местоположения (головы или тела): в прежние времена люди использовали скажем, поместите свои скрипты в голову, чтобы они были загружены после загрузки тела, и все интерактивные элементы могут использоваться пользователем. Но проблема в том, что загрузка этих скриптов будет блокировать загрузку визуальной части страницы, тела. По сути, пользователи смотрят на пустую страницу, задаваясь вопросом, что их страница так долго делает. Итак, популярная мудрость заключается в том, чтобы поместить все сценарии так далеко в тело, как вы можете, и убедитесь, что вы пишете свой javascript так, чтобы он мог обрабатывать частично загруженные скрипты. Руководство YSlow - отличный ресурс, чтобы узнать об этих вещах. см.: http://developer.yahoo.com/yslow/help/
«Внешний файл js, скорее всего, самый медленный, так как для этого потребуется отдельный HTTP-запрос» - это правда только в ситуации с одной страницей. Если это связано с загрузкой некоторых страниц, это может быть очень быстро против размещения JS в файле HTML. –