Original article:

http://javascript.crockford.com/script.html

Тег  < script >

Тег остается незаполненным.
Если атрибут src отсутствует, то текстовое содержимое между тегами компилируется и выполняется. Скрипту не обязательно придерживаться последовательности

поскольку его можно перепутать с . Вставка обратной косой черты между < and / в строках позволяет избежать проблемы. 
<\/
Обратная косая черта будут игнорироваться компилятором JavaScript.
Не используйте хак с помощью скриптов. Он предназначался для предотвращения скриптов от просмотра в виде текста в первом поколении браузеров Netscape 1 и Mosaic. Он не был необходим в течение многих лет. должен сигнализировать комментарий HTML. Комментарии должны быть проигнорированы, и не подлежат компиляции и выполнению. Кроме того, не стоит вносить комментарии HTML, поэтому скрипт, который декрементирует выдает ошибку HTML.
язык="javascript"

Этот атрибут является устаревшим. Он использовался для выбора других языков программирования и конкретных версий JavaScript. Вам это не нужно. Не используйте его.
тип="text/javascript
Этот атрибут является необязательным. С выходом Netscape 2, язык программирования по умолчанию во всех браузерах был JavaScript. В XHTML, этот атрибут возможен, но он не обязателен. В HTML его лучше оставить. Браузер сам знает, какие действия предпринять.
defer

Этот атрибут предназначался для изменения сроков при загрузке компонента на страницах. Данный атрибут имеет слабую поддержку, поэтому его лучше не применять.
for="name" event="name"

Этот атрибут является функцией Microsoft для объявления обработчиков событий. Данная функция не является стандартом. Не используйте ее.

Размещение
будет блокировать загрузку других компонентов страницы, пока скрипт не будет составлен и выполнен. Лучше вызвать скрипт позже, так что загрузка изображений и других компонентов не будет задержана. Это может улучшить воспринимаемое и фактическое время загрузки страницы. Так что, как правило, лучше всего, выполнить в последнюю очеред перед тегом . На странице <скрипт> не оказывает существенного влияния на время загрузки.
Если скрипт определяет функции или данные, которые используются другими функциями, то определение следует применить перед использованием. Таким образом, определяющие скрипты должны идти перед использованием скриптов.
document.write

Метод document.write обеспечивает способ включения строк в содержание HTML-страницы. Есть лучшие способы сделать это, такие как .innerHTML и .createElement или HTML-шаблонов клонирования. Использование document.write следует избегать.
document.write полностью зависит от времени. Если document.write вызвано перед событием загрузки, он добавляет или вставляет текст страницы. Если он вызван после выгрузки, тогда он полностью заменяет страницу, уничтожая то, что было до этого.
document.write имеет плохую структуру, в которой скрипт и разметка перемешаны. Очиститель структуры минимально взаимодействует между разметкой и скриптом.

Скрипт тег Hack
Атрибут src, на удивление, не находится по влиянием Same Origin Policy. Это означает, что созданный элемент скрипта может пойти на любой сервер, принести скрипт, и выполнить его.
Если сценарий вызывает доставку JSON, это имеет огромную пользу. К сожалению, нет никакого способа, чтобы ограничить скрипт или проверить его перед выполнением.
Он работает имея те же полномочия, что и скрипты со страницы. Таким образом, скрипт может получить доступ и использовать cookies.
Он может получить доступ к исходному серверу с помощью авторизации пользователя. Он может проверить DOM и глобальный объект JavaScript, а также передавать любую информацию, которую он находит в любой точке мира.
Тег Hack скрипт не является безопасным и его следует избегать.