Original article:

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

Etiqueta < script >
La etiqueta de script tiene dos objetivos:
1) Identifica un bloque de script en la página.
2) Carga un archivo de script.

Lo que hace depende de la presencia del atributo src. Un tag se requiere en ambos casos.
Una etiqueta de script puede contener tales atributos:
src="url"

El atributo src es opcional. Si está presente, entonces su valor es una url que identifica un archivo .js. La carga y el procesamiento de la página se detiene mientras el navegador busca, compila y ejecuta el archivo. El contenido entre el < script src = "url" > y el debe estar en blanco.
Si el atributo src no está presente, entonces el texto de contenido entre el < script > y el se compila y ejecuta. El script no debe contener la secuencia
. Insertar una barra invertida entre La barra invertida será ignorada por el compilador de JavaScript. No utilice el hack con scripts. Tenía la intención de evitar que los scripts aparecieran como texto en los navegadores de primera generación Netscape 1 y Mosaic. No ha sido necesario por muchos años. Se supone que señala un comentario HTML. Los comentarios deben ser ignorados, no compilados y ejecutados. Además, los comentarios HTML no se debe incluir -, por lo que un script que decrementa tiene un error HTML.
language=" javascript "

Este atributo ha quedado obsoleto. Se utilizaba para seleccionar otros lenguajes de programación y versiones específicas de JavaScript. No lo necesite. No lo use.
type="text/javascript"

Este atributo es opcional. Desde la introducción de Netscape 2, el lenguaje de programación predeterminado en todos los navegadores ha sido JavaScript. En XHTML, este atributo es necesario e innecesario. En HTML, es mejor dejarlo fuera. El navegador sabe qué hacer por si mismo.
defer

Este atributo estaba destinado a alterar la sincronización de la carga de componentes en las páginas. No está bien soportado y no debe utilizarse.
for="name" event="name"

Este atributo es una característica de Microsoft para declarar manejadores de eventos. No es estándar del sistema. Mejor no lo use.

Colocación
Un < script src = "url"> bloqueará la descarga de otros componentes de página hasta que se haya obtenido, compilado y ejecutado el script. Es mejor pedir el script lo más tarde posible, de modo que la carga de imágenes y otros componentes no se retrasen. Esto puede mejorar el tiempo de carga de la página percibida y real. Por lo general, es mejor hacer todas las < script src = "url" > por lo último y antes de la < / body >. Una in-page < script > no tiene un impacto significativo en el tiempo de carga.
Si un script está definiendo funciones o datos que son utilizados por otras funciones, entonces la definición debe ser hecha antes del uso. Así que los scripts de definición deben venir antes de usar los scripts.
document.write
El método document.write proporciona una forma de incorporar cadenas al contenido HTML de la página. Hay mejores maneras de hacerlo, como .innerHTML y .createElement o patrones de clonación de HTML. El uso de document.write debe ser evitado.
Document.write es imprudentemente se depende de la sincronización. Si document.write llama antes del evento onload, entonces agrega o inserta texto en la página. Si llama después de onload, reemplaza completamente la página, destruyendo lo que vino antes.
Document.write fomenta la mala estructura, en la que el script y el marcado se entremezclan. Una estructura más limpia tiene una interacción mínima entre el marcado y el script.

La etiqueta de Script Tag Hack
Sorprendentemente, el atributo src no está restringido por la misma política de origen. Esto significa que se puede crear un elemento de script que puede ir a cualquier servidor, buscar un script y ejecutarlo. Si el script provoca la entrega de datos codificados en JSON, entonces esto es una cosa muy útil. Desafortunadamente, no hay manera de restringir el script o inspeccionarlo antes de que se ejecute. Se ejecuta con la misma autoridad que los scripts de la página. Por lo tanto, el script puede acceder y utilizar sus cookies. Puede acceder al servidor de origen utilizando la autorización del usuario. Puede inspeccionar el DOM y el objeto global de JavaScript y enviar cualquier información que encuentre en cualquier parte del mundo. El Script Tag Hack no es seguro y debe ser evitado.