JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript.
Se define como orientado a objetos,[2] basado en prototipos, imperativo, débilmente tipado y dinámico.
Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM).
Tradicionalmente se venía utilizando en páginas web HTML para realizar operaciones y únicamente en el marco de la aplicación cliente, sin acceso a funciones del servidor.
Actualmente es ampliamente utilizado para enviar y recibir información del servidor junto con ayuda de otras tecnologías como AJAX.
JavaScript se interpreta en el agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML.
Desde el lanzamiento en junio de 1997 del estándar ECMAScript 1, han existido las versiones 2, 3 y 5, que es la más usada actualmente (la 4 se abandonó[7]).
[11] Es usada con licencia por los productos creados por Netscape Communications y entidades actuales como la Fundación Mozilla.
[12][13] Microsoft dio como nombre a su dialecto de JavaScript «JScript», para evitar problemas relacionadas con la marca.
[17][18] Una nueva implementación de JavaScript en el web es Deno (escrito en el lenguaje Rust) que tambien puede interpretar el TypeScript, y el WebAssembly (WASM).
[39] Las variables en JavaScript se definen usando la palabra clave var:[40] A considerar los comentarios en el ejemplo de arriba, los cuales van precedidos con 2 barras diagonales.
Algunos ejemplos sencillos de este uso son: Dado que el código JavaScript puede ejecutarse localmente en el navegador del usuario (en lugar de en un servidor remoto), el navegador puede responder a las acciones del usuario con rapidez, haciendo una aplicación más sensible.
Los navegadores web suelen crear objetos no nativos, dependientes del entorno de ejecución, para representar el Document Object Model (DOM) en JavaScript.
A continuación se muestra un breve ejemplo de una página web (ajustándose a las normas del estándar para HTML5) que utiliza JavaScript para el manejo del Document Object Model (DOM): Debido a que JavaScript se ejecuta en entornos muy variados, una parte importante de las pruebas y la depuración es probar y verificar que el código JavaScript funciona correctamente en múltiples navegadores.
La interfaz DOM para acceder y manipular páginas web no es parte del estándar ECMAScript, o de la propia JavaScript.
En particular, la página debe seguir siendo útil aunque sin las características adicionales que JavaScript habría añadido.
Hay eventos independientes del dispositivo, tales como onfocus y onchange que son preferibles en la mayoría de los casos.
Por ejemplo, modificar o desactivar la funcionalidad normal del navegador, como cambiar la forma en que el botón de navegar hacia atrás o el evento de actualización se comportan, son prácticas que generalmente son mejores evitar.
Las vulnerabilidades XSS permiten a un atacante inyectar código JavaScript en páginas web visitadas por el usuario.
Una solución para las vulnerabilidades XSS es utilizar HTML escaping cuando se muestre información de fuentes no confiables.
Algunos navegadores incluyen una protección parcial contra los ataques XSS reflejados (el atacante está en la misma petición web).
Solo el correcto diseño de las aplicaciones Web en la parte servidora puede prevenir totalmente XSS.
Las vulnerabilidades XSS también pueden ocurrir debido a errores de ejecución por los desarrolladores del navegador.
Dado que puede haber diferencias de implementación entre los diferentes navegadores (especialmente en cuanto al DOM), es útil tener acceso a un depurador para cada uno de los navegadores a los cuales nuestra aplicación web irá dirigido.
[53] Los depuradores web están disponibles para Internet Explorer, Firefox, Safari, Google Chrome y Opera.
Existen algunas herramientas de ayuda a la depuración, también escritas en JavaScript y construidas para ejecutarse en la Web.