You are on page 1of 9

JavaScript

Ir a la navegaciónIr a la búsquedaJavaScript Información generalParadigma


Mult iparadigma, programación funcional,1 programación basada en prot ot ipos,
imperat ivo, int erpret ado (script ing) Apareció en 1995 Diseñado por Net scape
Communicat ions Corp, Mozilla Fundat ionÚlt ima versión est able ECMAScript 2016;
(17 de junio de 2016 (2 años, 1 mes y 27 días) ) Sist ema de t ipos Débil, dinámico,
duck Implement aciones SpiderMonk ey, Rhino, KJS, JavaScript Core, V8, Chak ra.
Dialect os ECMAScript Influido por Java, Perl, Self, Pyt hon, C, SchemeHa influido
a Object iveJ, JScript , JScript .NET, TIScript [edit ar dat os en Wik idat a]
JavaScript Unofficial JavaScript logo 2.svgBrendan EichInformación generalExt ensión
de archivo .jsTipo de MIME applicat ion/javascript , t ext /javascript 2Tipo de
format o Script ingExt endido de ECMAScript Format o abiert o ? [edit ar dat os en
Wik idat a]JavaScript (abreviado comúnment e JS) es un lenguaje de programación
int erpret ado, dialect o del est ándar ECMAScript . Se define como orient ado a
objet os,3 basado en prot ot ipos, imperat ivo, débilment e t ipado y dinámico.Se ut iliza
principalment e en su forma del lado del client e (client -side) , implement ado como
part e de un navegador web permit iendo mejoras en la int erfaz de usuario y páginas
web dinámicas4 aunque exist e una forma de JavaScript del lado del servidor(Server-
side JavaScript o SSJS) . Su uso en aplicaciones ext ernas a la web, por ejemplo en
document os PDF, aplicaciones de escrit orio (mayorit ariament e widget s) es t ambién
significat ivo.Desde el 2012, t odos los navegadores modernos soport an complet ament e
ECMAScript 5 .1, una versión de javascript . Los navegadores más ant iguos soport an
por lo menos ECMAScript 3. La sext a edición se liberó en julio del 2015 .5 JavaScript
se diseñó con una sint axis similar a C, aunque adopt a nombres y convenciones del
lenguaje de programación Java. Sin embargo, Java y JavaScript t ienen semánt icas y
propósit os diferent es.Todos los navegadores modernos int erpret an el código
JavaScript int egrado en las páginas web. Para int eract uar con una página web se
provee al lenguaje JavaScript de una implement ación del Document Object Model
(DOM) .Tradicionalment e se venía ut ilizando en páginas web HTML para realizar
operaciones y únicament e en el marco de la aplicación client e, sin acceso a
funciones del servidor. Act ualment e es ampliament e ut ilizado para enviar y recibir
información del servidor junt o con ayuda de ot ras t ecnologías como AJAX. JavaScript
se int erpret a en el agent e de usuario al mismo t iempo que las sent encias van
descargándose junt o con el código HTML.Desde el lanzamient o en junio de 1997 del
est ándar ECMAScript 1, han exist ido las versiones 2, 3 y 5 , que es la más usada
act ualment e (la 4 se abandonó6) . En junio de 2015 se cerró y publicó la versión
ECMAScript 6.7Índice1 Hist oria1.1 Nacimient o de JavaScript 1.2 JavaScript en el
lado servidor1.3 Desarrollos post eriores2 Caract eríst icas2.1 Imperat ivo y
est ruct urado2.2 Dinámico2.3 Funcional2.4 Prot ot ípico2.5 Ot ras
caract eríst icas2.6 Ext ensiones específicas del fabricant e3 Sint axis y
semánt ica3.1 Ejemplos sencillos3.2 Ejemplos más avanzados4 Uso en páginas web
4.1 Ejemplo de script 4.2 Consideraciones acerca de la compat ibilidad4.3
Accesibilidad5 Seguridad5 .1 Vulnerabilidades cross-sit e6 Herramient as
de desarrollo7 Véase t ambién8 Referencias9 Bibliografía10 Enlaces
ext ernosHist oriaNacimient o de JavaScript JavaScript fue desarrollado originalment e
por Brendan Eich de Net scape con el nombre de Mocha, el cual fue renombrado
post eriorment e a LiveScript , para finalment e quedar como JavaScript . El cambio de
nombre coincidió aproximadament e con el moment o en que Net scape agregó
compat ibilidad con la t ecnología Java en su navegador web Net scape Navigat or en la
versión 2.002 en diciembre de 1995 . La denominación produjo confusión, dando la
impresión de que el lenguaje es una prolongación de Java, y se ha caract erizado por
muchos como una est rat egia de mercadot ecnia de Net scape para obt ener prest igio e
innovar en el ámbit o de los nuevos lenguajes de programación web.89«JAVASCRIPT» es
una marca regist rada de Oracle Corporat ion.10 Es usada con licencia por los
product os creados por Net scape Communicat ions y ent idades act uales como la
Fundación Mozilla.1112Microsoft dio como nombre a su dialect o de JavaScript
«JScript », para evit ar problemas relacionadas con la marca. JScript fue adopt ado en
la versión 3.0 de Int ernet Explorer, liberado en agost o de 1996, e incluyó
compat ibilidad con el Efect o 2000 con las funciones de fecha, una diferencia de los
que se basaban en ese moment o. Los dialect os pueden parecer t an similares que los
t érminos «JavaScript » y «JScript » a menudo se ut ilizan indist int ament e, pero la
especificación de JScript es incompat ible con la de ECMA en muchos aspect os.Para
evit ar est as incompat ibilidades, el World Wide Web Consort ium diseñó el est ándar
Document Object Model (DOM, o Modelo de Objet os del Document o en español) , que
incorporan Konqueror, las versiones 6 de Int ernet Explorer y Net scape Navigat or,
Opera la versión 7, Mozilla Applicat ion Suit e y Mozilla Firefox desde su primera
versión.[cit a requerida]En 1997 los aut ores propusieron13 JavaScript para que fuera
adopt ado como est ándar de la European Comput er Manufact urers 'Associat ion ECMA, que
a pesar de su nombre no es europeo sino int ernacional, con sede en Ginebra. En
junio de 1997 fue adopt ado como un est ándar ECMA, con el nombre de ECMAScript . Poco
después t ambién como un est ándar ISO.JavaScript en el lado servidorNet scape
int rodujo una implement ación de script del lado del servidor con Net scape
Ent erprise Server, lanzada en diciembre de 1994 (poco después del lanzamient o de
JavaScript para navegadores web) .1415 A part ir de mediados de la década de los
2000, ha habido una proliferación de implement aciones de JavaScript para el lado
servidor. Node.js es uno de los not ables ejemplos de JavaScript en el lado del
servidor, siendo usado en proyect os import ant es.1617Desarrollos post eriores
JavaScript se ha convert ido en uno de los lenguajes de programación más populares
en int ernet . Al principio, sin embargo, muchos desarrolladores renegaban del
lenguaje porque el público al que va dirigido lo formaban publicadores de art ículos
y demás aficionados, ent re ot ras razones.18 La llegada de Ajax devolvió JavaScript
a la fama y at rajo la at ención de muchos ot ros programadores. Como result ado de
est o hubo una proliferación de un conjunt o de framework s y librerías de ámbit o
general, mejorando las práct icas de programación con JavaScript , y aument ado el uso
de JavaScript fuera de los navegadores web, como se ha vist o con la proliferación
de ent ornos JavaScript del lado del servidor. En enero de 2009, el proyect o
CommonJS fue inaugurado con el objet ivo de especificar una librería para uso de
t areas comunes principalment e para el desarrollo fuera del navegador web.19En junio
de 2015 se cerró y publicó el est ándar ECMAScript 62021 con un soport e irregular
ent re navegadores22 y que dot a a JavaScript de caract eríst icas avanzadas que se
echaban de menos y que son de uso habit ual en ot ros lenguajes como, por ejemplo,
módulos para organización del código, verdaderas clases para programación orient ada
a objet os, expresiones de flecha, it eradores, generadores o promesas para
programación asíncrona.La versión 7 de ECMAScript se conoce como ECMAScript 2016,23
y es la últ ima versión disponible, publicada en junio de 2016. Se t rat a de la
primera versión para la que se usa un nuevo procedimient o de publicación anual y un
proceso de desarrollo abiert o.24Caract eríst icasLas siguient es caract eríst icas son
comunes a t odas las implement aciones que se ajust an al est ándar ECMAScript , a menos
que especifique explícit ament e en caso cont rario.Imperat ivo y est ruct urado
JavaScript es compat ible con gran part e de la est ruct ura de programación de C (por
ejemplo, sent encias if, bucles for, sent encias swit ch, et c.) . Con una salvedad, en
part e: en C, el ámbit o de las variables alcanza al bloque en el cual fueron
definidas; sin embargo JavaScript no es compat ible con est o, puest o que el ámbit o
de las variables es el de la función en la cual fueron declaradas. Est o cambia con
la versión de ECMAScript 2015 , ya que añade compat ibilidad con block scoping por
medio de la palabra clave let . Como en C, JavaScript hace dist inción ent re
expresiones y sent encias. Una diferencia sint áct ica con respect o a C es la
inserción aut omát ica de punt o y coma, es decir, en JavaScript los punt os y coma que
finalizan una sent encia pueden ser omit idos.25 DinámicoTipado dinámicoComo en la
mayoría de lenguajes de script ing, el t ipo est á asociado al valor, no a la
variable. Por ejemplo, una variable x en un moment o dado puede est ar ligada a un
número y más adelant e, religada a una cadena. JavaScript es compat ible con varias
formas de comprobar el t ipo de un objet o, incluyendo duck t yping.26 Una forma de
saberlo es por medio de la palabra clave t ypeof.Objet ualJavaScript est á formado
casi en su t ot alidad por objet os. Los objet os en JavaScript son arrays asociat ivos,
mejorados con la inclusión de prot ot ipos (ver más adelant e) . Los nombres de las
propiedades de los objet os son claves de t ipo cadena: obj.x = 10 y obj['x'] = 10
son equivalent es, siendo azúcar sint áct ico la not ación con punt o. Las propiedades y
sus valores pueden ser creados, cambiados o eliminados en t iempo de ejecución. La
mayoría de propiedades de un objet o (y aquellas que son incluidas por la cadena de
la herencia prot ot ípica) pueden ser enumeradas a por medio de la inst rucción de
bucle for... in. JavaScript t iene un pequeño número de objet os predefinidos como
son Funct ion y Dat e.Evaluación en t iempo de ejecuciónJavaScript incluye la función
eval que permit e evaluar expresiones expresadas como cadenas en t iempo de
ejecución.
Por ello se recomienda que eval sea ut ilizado con precaución y que se opt e por
ut ilizar la función JSON.parse() en la medida de lo posible, pues result a mucho más
segura.FuncionalFunciones de primera claseA las funciones se les suele llamar
ciudadanos de primera clase; son objet os en sí mismos. Como t al, poseen propiedades
y mét odos, como .call() y .bind() .27 Una función anidada es una función definida
dent ro de ot ra. Est a es creada cada vez que la función ext erna es invocada. Además,
cada función creada forma una clausura; es el result ado de evaluar un ámbit o
cont eniendo en una o más variables dependient es de ot ro ámbit o ext erno, incluyendo
const ant es, variables locales y argument os de la función ext erna llamant e. El
result ado de la evaluación de dicha clausura forma part e del est ado int erno de cada
objet o función, incluso después de que la función ext erior concluya su
evaluación.28Prot ot ípicoProt ot iposJavaScript usa prot ot ipos en vez de clases para
el uso de herencia.29 Es posible llegar a emular muchas de las caract eríst icas que
proporcionan las clases en lenguajes orient ados a objet os t radicionales por medio
de prot ot ipos en JavaScript .30Funciones como const ruct ores de objet osLas funciones
t ambién se comport an como const ruct ores. Prefijar una llamada a la función con la
palabra clave new crear una nueva inst ancia de un prot ot ipo, que heredan
propiedades y mét odos del const ruct or (incluidas las propiedades del prot ot ipo de
Object ) .31 ECMAScript 5 ofrece el mét odo Object .creat e, permit iendo la creación
explícit a de una inst ancia sin t ener que heredar aut omát icament e del prot ot ipo de
Object (en ent ornos ant iguos puede aparecer el prot ot ipo del objet o creado como
null) .32 La propiedad prot ot ype del const ruct or det ermina el objet o usado para el
prot ot ipo int erno de los nuevos objet os creados. Se pueden añadir nuevos mét odos
modificando el prot ot ipo del objet o usado como const ruct or. Const ruct ores
predefinidos en JavaScript , como Array u Object , t ambién t ienen prot ot ipos que
pueden ser modificados. Aunque est o sea posible se considera una mala práct ica
modificar el prot ot ipo de Object ya que la mayoría de los objet os en Javascript
heredan los mét odos y propiedades del objet o prot ot ype, objet os los cuales pueden
esperar que est os no hayan sido modificados.33Ot ras caract eríst icasEnt orno de
ejecuciónJavaScript normalment e depende del ent orno en el que se ejecut e (por
ejemplo, en un navegador web) para ofrecer objet os y mét odos por los que los
script s pueden int eract uar con el "mundo ext erior". De hecho, depende del ent orno
para ser capaz de proporcionar la capacidad de incluir o import ar script s (por
ejemplo, en HTML por medio del t ag <script >) . (Est o no es una caract eríst ica del
lenguaje, pero es común en la mayoría de las implement aciones de JavaScript .)
Funciones variádicasUn número indefinido de parámet ros pueden ser pasados a la
función. La función puede acceder a ellos a t ravés de los parámet ros o t ambién a
t ravés del objet o local argument s. Las funciones variádicas t ambién pueden ser
creadas usando el mét odo .apply() .Funciones como mét odosA diferencia de muchos
lenguajes orient ados a objet os, no hay dist inción ent re la definición de función y
la definición de mét odo. Más bien, la dist inción se produce durant e la llamada a la
función; una función puede ser llamada como un mét odo. Cuando una función es
llamada como un mét odo de un objet o, la palabra clave t his, que es una variable
local a la función, represent a al objet o que invocó dicha función.Arrays y la
definición lit eral de objet osAl igual que muchos lenguajes de script , arrays y
objet os (arrays asociat ivos en ot ros idiomas) pueden ser creados con una sint axis
abreviada. De hecho, est os lit erales forman la base del format o de dat os JSON.
Expresiones regularesJavaScript t ambién es compat ible con expresiones regulares de
una manera similar a Perl, que proporcionan una sint axis concisa y poderosa para la
manipulación de t ext o que es más sofist icado que las funciones incorporadas a los
objet os de t ipo st ring.34Ext ensiones específicas del fabricant eJavaScript se
encuent ra oficialment e bajo la organización de Mozilla Foundat ion, y periódicament e
se añaden nuevas caract eríst icas del lenguaje. Sin embargo, sólo algunos mot ores
JavaScript son compat ibles con est as caract eríst icas:Las propiedades get y set
(t ambién compat ibles con WebKit , Opera,35 Act ionScript y Rhino) .36Cláusulas cat ch
condicionales.Prot ocolo it erador adopt ado de Pyt hon.Corrut inas t ambién adopt adas de
Pyt hon.Generación de list as y expresiones por comprensión t ambién adopt ado de
Pyt hon.Est ablecer el ámbit o a bloque a t ravés de la palabra clave let .
Desest ruct uración de arrays y objet os (forma limit a de emparejamient o de pat rones) .
Expresiones concret as en funciones (funct ion(args) expr) .ECMAScript para XML (E4X) ,
una ext ensión que añade compat ibilidad nat iva XML a ECMAScript .Sint axis y semánt ica
Art ículo principal: Sint axis de JavaScript la últ ima versión del lenguaje es
ECMAScript 2016 publicada el 17 de junio del 201637Ejemplos sencillosLas variables
en JavaScript se definen usando la palabra clave var:38var x; // define la variable
x, aunque no t iene ningún valor asignado por defect ovar y = 2; // define la
variable y y le asigna el valor 2 a ellaA considerar los coment arios en el ejemplo
de arriba, los cuales van precedidos con 2 barras diagonales.No exist en
funcionalidades para I/O incluidas en el lenguaje; el ent orno de ejecución ya lo
proporciona. La especificación ECMAScript en su edición 5 .1 hace mención:39... en
efect o, no exist en provisiones en est a especificación para ent rada de dat os
ext ernos o salida para result ados comput ados.Sin embargo, la mayoría de los
ent ornos de ejecución t iene un objet o40 llamado console que puede ser usado para
imprimir por el flujo de salida de la consola de depuración. He aquí un simple
programa que imprime “Hello world!”:console.log("Hello world!") ;Una función
recursiva:funct ion fact orial(n) { if (n === 0) { ret urn 1; } ret urn
n * fact orial(n - 1) ;} Ejemplos de función anónima (o función lambda) y una
clausura:var displayClosure = funct ion() { var count = 0; ret urn funct ion ()
{ ret urn ++count ; } ;} var inc = displayClosure() ;inc() ; // devuelve 1
inc() ; // devuelve 2inc() ; // devuelve 3Las expresiones con invocación aut omát ica
permit en a las funciones pasarle variables por parámet ro dent ro de sus propias
clausuras.var v;v = 1;var get Value = (funct ion(v) { ret urn funct ion() { ret urn v;} ;
} (v) ) ;v = 2;get Value() ; // 1Ejemplos más avanzadosEl siguient e código muest ra
varias caract eríst icas de JavaScript ./* Busca el mínimo común múlt iplo (MCM) de dos
números */funct ion LCMCalculat or(x, y) { // función const ruct ora var check Int =
funct ion (x) { // función int erior if (x % 1 !== 0) { t hrow new
TypeError(x + " no es un ent ero") ; // lanza una excepción } ret urn x;
} ; t his.a = check Int (x) // punt os y coma son opcionales t his.b = check Int (y) ;
} // El prot ot ipo de las inst ancias de objet o creados por el const ruct or es el de la
propiedad “prot ot ype” del const ruct or.LCMCalculat or.prot ot ype = { // objet o
definido como lit eral const ruct or: LCMCalculat or, // cuando reasignamos un
prot ot ipo, est ablecemos correct ament e su propiedad const ruct or gcd: funct ion ()
{ // mét odo que calcula el máximo común divisor // Algorit mo de Euclides:
var a = Mat h.abs(t his.a) , b = Mat h.abs(t his.b) , t ; if (a < b) {
// int ercambiamos variables t = b; b = a;
a = t ; } while (b !== 0) { t = b; b = a % b;
a = t ; } // Solo necesit amos calcular el MCD una vez, por lo t ant o
'redefinimos' est e mét odo. // (Realment e no es una redefinición—est á
definida en la propia inst ancia, por lo t ant o // t his.gcd se refiere a est a
'redefinición' en vez de a LCMCalculat or.prot ot ype.gcd) . // Además, 'gcd'
=== "gcd", t his['gcd'] === t his.gcd t his['gcd'] = funct ion () {
ret urn a; } ; ret urn a; } , // Los nombres de las propiedades del
objet o pueden ser especificados con cadenas delimit adas con comillas simples (') o
dobles (“) . "lcm" : funct ion () { // Los nombres de las variables no
colisionan con las propiedades del objet o. Por ejemplo: |lcm| no es |t his.lcm|.
// No usar |t his.a * t his.b| para evit ar problemas con cálculos en coma flot ant e.
var lcm = t his.a / t his.gcd() * t his.b; // Sólo necesit amos calcular MCM una
vez, por lo t ant o "redefinimos" est e mét odo. t his.lcm = funct ion () {
ret urn lcm; } ; ret urn lcm; } , t oSt ring: funct ion () {
ret urn "LCMCalculat or: a = " + t his.a + ", b = " + t his.b; } } ;// Definimos una
función genérica para imprimir un result ado; est a implement ación solo funciona en
los navegadores webfunct ion out put (x) {
document .body.appendChild(document .creat eText Node(x) ) ;
document .body.appendChild(document .creat eElement ('br') ) ;} // Not a: Los mét odos.map()
y.forEach() del prot ot ipo Array est án definidos en JavaScript 1.6.// Est os mét odos
son usados aquí para demost rar la nat uraleza funcional inherent e del lenguaje.[[25 ,
5 5 ], [21, 5 6], [22, 5 8], [28, 5 6]].map(funct ion (pair) { // const rucción lit eral de
un Array + función de mapeo. ret urn new LCMCalculat or(pair[0], pair[1]) ;
} ) .sort (funct ion (a, b) { // ordenamos la colección por medio de est a función
ret urn a.lcm() - b.lcm() ;} ) .forEach(funct ion (obj) { out put (obj + ", gcd = " +
obj.gcd() + ", lcm = " + obj.lcm() ) ;} ) ;El siguient e ejemplo muest ra la salida que
debería ser most rada en la vent ana de un navegador.LCMCalculat or: a = 28, b = 5 6,
gcd = 28, lcm
= 5 6LCMCalculat or: a = 21, b = 5 6, gcd = 7, lcm = 168LCMCalculat or: a = 25 , b =
5 5 , gcd = 5 , lcm = 275 LCMCalculat or: a = 22, b = 5 8, gcd = 2, lcm = 638Uso en
páginas webVéanse t ambién: Int érpret e de JavaScript y AJAX.El uso más común de
JavaScript es escribir funciones embebidas o incluidas en páginas HTML y que
int eract úan con el Document Object Model (DOM o Modelo de Objet os del Document o) de
la página. Algunos ejemplos sencillos de est e uso son:Cargar nuevo cont enido para
la página o enviar dat os al servidor a t ravés de AJAX sin necesidad de recargar la
página (por ejemplo, una red social puede permit ir al usuario enviar
act ualizaciones de est ado sin salir de la página) .Animación de los element os de
página, hacerlos desaparecer, cambiar su t amaño, moverlos, et c.Cont enido
int eract ivo, por ejemplo, juegos y reproducción de audio y vídeo.Validación de los
valores de ent rada de un formulario web para asegurarse de que son acept ables ant es
de ser enviado al servidor.Transmisión de información sobre los hábit os de lect ura
de los usuarios y las act ividades de navegación a varios sit ios web. Las páginas
Web con frecuencia lo hacen para hacer análisis web, seguimient o de anuncios, la
personalización o para ot ros fines.41Dado que el código JavaScript puede ejecut arse
localment e en el navegador del usuario (en lugar de en un servidor remot o) , el
navegador puede responder a las acciones del usuario con rapidez, haciendo una
aplicación más sensible. Por ot ra part e, el código JavaScript puede det ect ar
acciones de los usuarios que HTML por sí sola no puede, como pulsaciones de
t eclado. Las aplicaciones como Gmail se aprovechan de est o: la mayor part e de la
lógica de la int erfaz de usuario est á escrit a en JavaScript , enviando pet iciones al
servidor (por ejemplo, el cont enido de un mensaje de correo elect rónico) . La
t endencia cada vez mayor por el uso de la programación Ajax explot a de manera
similar est a t écnica.Un mot or de JavaScript (t ambién conocido como int érpret e de
JavaScript o implement ación JavaScript ) es un int érpret e que int erpret a el código
fuent e de JavaScript y ejecut a la secuencia de comandos en consecuencia. El primer
mot or de JavaScript fue creado por Brendan Eich en Net scape Communicat ions
Corporat ion, para el navegador web Net scape Navigat or. El mot or, denominado
SpiderMonk ey, est á implement ado en C. Desde ent onces, ha sido act ualizado (en
JavaScript 1.5 ) para cumplir con el ECMA-262 edición 3. El mot or Rhino, creado
principalment e por Norris Boyd (ant es de Net scape, ahora en Google) es una
implement ación de JavaScript en Java. Rhino, como SpiderMonk ey, es compat ible con
el ECMA-262 edición 3.Un navegador web es, con mucho, el ent orno de acogida más
común para JavaScript . Los navegadores web suelen crear objet os no nat ivos,
dependient es del ent orno de ejecución, para represent ar el Document Object Model
(DOM) en JavaScript . El servidor web es ot ro ent orno común de servicios. Un
servidor web JavaScript suele exponer sus propios objet os para represent ar objet os
de pet ición y respuest a HTTP, que un programa JavaScript podría ent onces int errogar
y manipular para generar dinámicament e páginas web.Debido a que JavaScript es el
único lenguaje por el que los más populares navegadores compart en su apoyo, se ha
convert ido en un lenguaje al que muchos framework s en ot ros lenguajes compilan, a
pesar de que JavaScript no fue diseñado para t ales propósit os.42 A pesar de las
limit aciones de rendimient o inherent es a su nat uraleza dinámica, el aument o de la
velocidad de los mot ores de JavaScript ha hecho de est e lenguaje un ent orno para la
compilación sorprendent ement e fact ible.Ejemplo de script A cont inuación se muest ra
un breve ejemplo de una página web (ajust adose a las normas del est ándar para
HTML5 ) que ut iliza JavaScript para el manejo del DOM:<!DOCTYPE ht ml><ht ml><head>
<met a charset ="ut f-8"> <t it le>Ejemplo sencillo</t it le></head><body> <h1
id="header">Est o es JavaScript </h1> <script >
document .body.appendChild(document .creat eText Node('Hola Mundo!') ) ; var
h1 = document .get Element ById('header') ; // cont iene la referencia al t ag <h1>
h1 = document .get Element sByTagName('h1') [0]; // accediendo al mismo element o <h1>
</script > <noscript >Tu navegador no admit e JavaScript , o JavaScript est á
deshabilit ado.</noscript ></body></ht ml>Consideraciones acerca de la compat ibilidad
Art ículo principal: Int eroperabilidad webDebido a que JavaScript se ejecut a en
ent ornos muy variados, una part e import ant e de las pruebas y la depuración es
probar y verificar que el código JavaScript funciona correct ament e en múlt iples
navegadores. La int erfaz DOM para acceder y manipular páginas web no es part e del
est ándar ECMAScript , o de la propia JavaScript . El DOM es definido por los
esfuerzos de est andarización del W3C, una organización independient e. En la
práct ica, las implement aciones que hacen de JavaScript los dist int os navegadores
difieren t ant o ent re ellos mismos como de las normas del est ándar.Para hacer frent e
a est as diferencias, los aut ores de JavaScript pudieron ser capaces de escribir
código compat ible con los est ándares que t ambién fuera capaz de ejecut arse
correct ament e en la mayoría de los navegadores, o en su defect o, que al menos se
pudiera escribir código capaz de comprobar la presencia de ciert as funcionalidades
del navegador y que se comport ase de manera diferent e si no se dispusiese de dicha
funcionalidad.43 Exist en casos en los que dos navegadores pueden llegar a
implement ar la misma caract eríst ica, pero con un comport amient o diferent e, hecho
que a los programadores les puede result ar de ayuda para det ect ar qué navegador se
est á ejecut ando en ese inst ant e y así cambiar el comport amient o de su escrit ura
para que coincida.4445 Los programadores t ambién suelen ut ilizar bibliot ecas o
herramient as que t engan en cuent a las diferencias ent re navegadores.Además, los
script s pueden no funcionar para algunos usuarios. Por ejemplo, un usuario puede:
ut ilizar un navegador ant iguo sin compat ibilidad complet a con la API DOM,ut ilizar
un navegador PDA o t eléfono móvil que no puede ejecut ar JavaScript t ener la
ejecución de JavaScript deshabilit ada, como precaución de seguridad,ut ilizar un
navegador de voz debido a, por ejemplo, una discapacidad visual.Para apoyar a est os
usuarios, los programadores web suelen crear páginas que sean t olerant e a fallos
según el agent e de usuario (t ipo de navegador) que no admit a JavaScript . En
part icular, la página debe seguir siendo út il aunque sin las caract eríst icas
adicionales que JavaScript habría añadido. Un enfoque alt ernat ivo que muchos
encuent ran preferible es primero crear cont enido ut ilizando las t ecnologías que
funcionan en t odos los navegadores, y mejorar el cont enido para los usuarios que
han permit ido JavaScript .AccesibilidadArt ículo principal: Accesibilidad web
Suponiendo que el usuario no haya desact ivado la ejecución de código JavaScript , en
el lado del client e JavaScript debe ser escrit o t ant o con el propósit o de mejorar
las experiencias de los visit ant es con discapacidad visual o física, como el de
evit ar ocult ar información a est os visit ant es.46Los lect ores de pant alla,
ut ilizados por los ciegos y deficient es visuales, pueden ser t enidos en cuent a por
JavaScript y así poder acceder y leer los element os DOM de la página. El código
HTML escrit o debe ser lo más conciso, navegable y semánt icament e rico posible,
t ant o si JavaScript se ejecut a como si no.JavaScript no debería de ser t ot alment e
dependient e de los event os de rat ón del navegador y debería ser accesible para
aquellos usuarios que no quieran hacer uso del rat ón (informát ica) para navegar o
que opt en por ut ilizar solament e el t eclado. Hay event os independient es del
disposit ivo, t ales como onfocus y onchange que son preferibles en la mayoría de los
casos.46JavaScript no debe ser ut ilizado para crear confusión o desorient ación al
usuario web. Por ejemplo, modificar o desact ivar la funcionalidad normal del
navegador, como cambiar la forma en que el bot ón de navegar hacia at rás o el event o
de act ualización se comport an, son práct icas que generalment e son mejores evit ar.
Igualment e, desencadenar event os que el usuario puede no t ener en cuent a reduce la
sensación de cont rol del usuario y provoca cambios inesperados al cont enido de la
página.47A menudo, el proceso de dot ar a una página web compleja el mayor grado
accesibilidad posible, se conviert e en un problema no t rivial donde muchos t emas se
acaban llevando al debat e y a la opinión, siendo necesario el compromiso de t odos
hast a el final. Sin embargo, los agent es de usuario y las t ecnologías de apoyo a
personas con discapacidad est án en const ant e evolución y nuevas direct rices e
información al respect o siguen publicándose en la web.46SeguridadVéase t ambién:
Seguridad del navegadorJavaScript y el DOM permit e que exist an programadores que
hagan un uso inapropiado para int roducir script s que ejecut en código con cont enido
malicioso sin el consent imient o del usuario y que pueda así compromet er su
seguridad.Los desarrolladores de los navegadores t ienen en cuent a est e riesgo
ut ilizando dos rest ricciones. En primer lugar, los script s se ejecut an en un
sandbox en el que sólo se pueden llevar a cabo acciones relacionadas con la web, no
con t areas de programación de propósit o general, como la creación de archivos. En
segundo lugar, est á limit ada por la polít ica del mismo origen: los script s de un
sit io web no t ienen acceso a la información enviada a ot ro sit io web (de ot ro
dominio) como pudiera ser nombres de usuario, cont raseñas o cook ies. La mayoría de
los fallos de seguridad de JavaScript est án relacionados con violaciones de
cualquiera de est as dos rest ricciones.Exist en proyect os como AdSafe o Secure ECMA
script (SES) que proporcionan mayores niveles de seguridad, en especial
en el código creado por t erceros (t ales como los anuncios) .4849La Polít ica de
Cont enido Seguro (CSP) es el mét odo principal previst o para garant izar que sólo
código de confianza pueda ser ejecut ado en una página web.Vulnerabilidades cross-
sit eArt ículos principales: Cross-sit e script ing y Cross Sit e Request Forgery.Un
problema común de seguridad en JavaScript es el cross-sit e script ing o XSS, una
violación de la polít ica de mismo origen. Las vulnerabilidades XSS permit en a un
at acant e inyect ar código JavaScript en páginas web visit adas por el usuario. Una de
esas webs podría ser la de un banco, pudiendo el at acant e acceder a la aplicación
de banca con los privilegios de la víct ima, lo que podría revelar información
secret a o t ransferir dinero sin la aut orización de la víct ima. Una solución para
las vulnerabilidades XSS es ut ilizar HTML escaping cuando se muest re información de
fuent es no confiablesAlgunos navegadores incluyen una prot ección parcial cont ra los
at aques XSS reflejados (el at acant e est á en la misma pet ición web) . El at acant e
proporciona una URL incluyendo código malicioso. Sin embargo, incluso los usuarios
de los navegadores son vulnerables a ot ros at aques XSS, t ales como aquellos en los
que el código malicioso se almacena en una base de dat os. Sólo el correct o diseño
de las aplicaciones Web en la part e servidora puede prevenir t ot alment e XSS. Las
vulnerabilidades XSS t ambién pueden ocurrir debido a errores de ejecución por los
desarrolladores del navegador.5 0Ot ra vulnerabilidad es la falsificación de pet ición
de sit io cruzado o CSRF. En CSRF, el código del sit io web at acant e engaña al
navegador de la víct ima, permit iendo al at acant e realizar pet iciones en nombre de
la víct ima, haciendo imposible saber a la aplicación de dest ino (por ejemplo, la de
un banco haciendo una t ransferencia de dinero) saber si la pet ición ha sido
realizada volunt ariament e por el usuario o por un at aque CSRF.El at aque funciona
porque, si el sit io de dest ino hace uso únicament e de las cook ies para aut ent icar
las solicit udes de la víct ima, las pet iciones iniciadas por el código del at acant e
t endrán las mismas credenciales de acceso legít imo que las solicit udes iniciadas
por el propio usuario.En general, la solución a CSRF consist e en int roducir un
campo de formulario ocult o cuyo valor se ut ilice para realizar la aut ent icación, y
no sólo por medio de las cook ies, en solicit udes que puedan t ener efect os
duraderos. La comprobación de la cabecera HTTP referer t ambién puede servir de
ayuda."Hijack ing JavaScript " es un t ipo de at aque CSRF en el que una et iquet a
<script > en el sit io web del at acant e explot a una vulnerabilidad en la página del
sit io de la víct ima que le hace devolver información privada, en forma de JSON o
código JavaScript . Las posibles soluciones son:que se requiera un t ok en de
aut ent icación en los parámet ros de las pet iciones POST y GET para aquellas
pet iciones que requieran devolver información privada del usuario.usar POST y nunca
GET para solicit udes que devuelven información privadaHerramient as de desarrolloEn
JavaScript , disponer de un depurador se conviert e en necesario cuando se
desarrollan grandes aplicaciones, no t riviales. Dado que puede haber diferencias de
implement ación ent re los diferent es navegadores (especialment e en cuant o al DOM) ,
es út il t ener acceso a un depurador para cada uno de los navegadores a los cuales
nuest ra aplicación web irá dirigido.5 1Los depuradores web est án disponibles para
Int ernet Explorer, Firefox, Safari, Google Chrome y Opera.5 2Exist en t res
depuradores disponibles para Int ernet Explorer: Microsoft Visual St udio es el más
avanzado de los t res, seguido de cerca por Microsoft Script Edit or (un component e
de Microsoft Office) 5 3 y, finalment e, Microsoft Script Debugger, que es mucho más
básico que el ot ro dos, aunque es grat uit o. El IDE grat uit o Microsoft Visual Web
Developer Express ofrece una versión limit ada de la funcionalidad de depuración de
JavaScript en el Microsoft Visual St udio. Int ernet Explorer ha incluido
herramient as de desarrollo desde la versión 8 (se muest ra pulsando la t ecla F12) .
Las aplicaciones web dent ro de Firefox se pueden depurar usando el Firebug add-on o
el ant iguo depurador Venk man. Firefox t ambién t iene int egrada una consola de
errores básica, que regist ra y evalúa JavaScript . También regist ra errores de CSS y
advert encias. Opera incluye un conjunt o de herramient as llamado Dragonfly.5 4 El
Inspect or Web de WebKit incluye un depurador de JavaScript 5 5 ut ilizado en Safari,
junt o con una versión modificada de Google Chrome.Exist en algunas herramient as de
ayuda a la depuración, t ambién escrit as en JavaScript y const ruidas para ejecut arse
en la Web. Un ejemplo es el programa JSLint , desarrollado por Douglas Crock ford,
quien ha escrit o ext ensament e sobre el lenguaje. JSLint analiza el código
JavaScript para que est e quede conforme con un conjunt o de normas y direct rices y
que aseguran su correct o funcionamient o y mant enibilidad.Véase t ambiénVBScript AJAX
Aplicación webDocument Object ModelJSONHTMLReferencias Douglas Crock ford on
Funct ional JavaScript (2:49) : "[JavaScript ] es el lenguaje funcional más popular
del mundo. JavaScript es y siempre ha sido, al menos desde [la versión] 1.2, un
lenguaje de programación funcional." RFC 4329 ht t p://www.ecma-
int ernat ional.org/publicat ions/files/ECMA-ST/ECMA-262.pdf M. Domínguez-Dorado,.
Todo Programación. Nº 12. Págs. 48-5 1. Edit orial Iberprensa(Madrid) . DL M-13679-
2004. Sept iembre de 2005 . Bases de dat os en el client e con JavaScript DB.
«JavaScript ». Mozilla Developer Net work . Consult ado el 16 de sept iembre de 2016.
Eich, Brendan (13 de agost o de 2008) . «ECMAScript Harmony». Consult ado el 22 de
julio de 2015 . campusMVP (19 de junio de 2015 ) . «ECMAScript 6 es ya un est ándar
cerrado». Consult ado el 22 de julio de 2015 . Lenguajes de programación usados en
Int ernet y la World Wide Web (WWW) (cast ellano) .com/05 96101996/jscript 5 -CHP-1
O'Reilly - Safari Book s Online - 05 96101996 - JavaScript : The Definit ive Guide, 5 ª
edición (cast ellano)
ht t p://t sdr.uspt o.gov/#caseNumber=75 026640&caseType=SERIAL_NO&searchType=st at usSear
ch Marcas regist radas de Oracle. «About JavaScript » (en inglés) . Consult ado el 29
de agost o de 2013. «JavaScript is a t rademark or regist ered t rademark of Oracle in
t he U.S. and ot her count ries». Net scape Comunicado de prensa (cast ellano) «Chapt er
2: Get t ing St art ed». Server-Side JavaScript Guide. Net scape Communicat ions
Corporat ion. 1998. Consult ado el 25 de abril de 2012. Mik e Morgan (1996) . «Chapt er
6: Net scape Int ernet Applicat ion Framework ». Using Net scape™ LiveWire™, Special
Edit ion. Que. Archivado desde el original el 27 de noviembre de 2015 . «Server-Side
Javascript : Back Wit h a Vengeance». Read Writ e Web. 17 de diciembre de 2009.
Consult ado el 28 de mayo de 2012. «Node's goal is t o provide an easy way t o build
scalable net work programs». About Node.js. Joyent . «JavaScript : The World's Most
Misunderst ood Programming Language». Crock ford.com. Consult ado el 19 de mayo de
2009. Kris Kowal (1 de diciembre de 2009) . «CommonJS effort set s JavaScript on pat h
for world dominat ion». Ars Technica. Condé Nast Publicat ions. Consult ado el 18 de
abril de 2010. ECMA Int ernat ional (Junio de 2015 ) . «St andard ECMA-262 6t h Edit ion».
campusMVP (19 de junio de 2015 ) . «ECMAScript 6 ya es un est ándar cerrado».
Consult ado el 22 de julio de 2015 . «Tabla de compat ibilidad de navegadores con
ECMAScript 6 (Inglés) ». ECMA Int ernat ional (Junio de 2016) . «St andard ECMA-262 7t h
Edit ion». ECMA Int ernat ional (Junio de 2016) . «ECMAScript 2016 Language
Specificat ion». Flanagan, 2006, p. 16. Flanagan, 2006, pp. 176–178. Propert ies of
t he Funct ion Object Flanagan, 2006, p. 141. «Inherit ance and t he prot ot ype chain».
Mozilla Developer Net work . Mozilla. Consult ado el 6 de abril de 2013. Herman, David
(2013) . Effect ive Javascript . Addison-Wesley. p. 83. ISBN 9780321812186. Haverbek e,
Marjin (2011) . Eloquent Javascript . No St arch Press. pp. 95 -97. ISBN 97815 93272821.
Kat z, Yehuda. «Underst anding "Prot ot ypes" in JavaScript ». Consult ado el 6 de abril
de 2013. Herman, David (2013) . Effect ive Javascript . Addison-Wesley. pp. 125 -127.
ISBN 9780321812186. Haverbek e, Marijn (2011) . Eloquent JavaScript . No St arch Press.
pp. 139-149. ISBN 978-15 93272821. Robert Nyman, Get t ers And Set t ers Wit h JavaScript
– Code Samples And Demos, published 29 May 2009, accessed 2 January 2010. John
Resig, JavaScript Get t ers and Set t ers, 18 July 2007, accessed 2 January 2010
ht t p://www.ecma-int ernat ional.org/publicat ions/st andards/Ecma-262.ht m. «var -
JavaScript - MDN». The Mozilla Developer Net work . Consult ado el 22 de diciembre de
2012. «ECMAScript Language Specificat ion - ECMA-262 Edit ion 5 .1». Ecma
Int ernat ional. Consult ado el 22 de diciembre de 2012. «console». Mozilla Developer
Net work . Mozilla. Consult ado el 6 de abril de 2013. «JavaScript t rack ing - Piwik ».
Piwik . Consult ado el 31 de marzo de 2012. Hamilt on, Naomi (31 de junio de 2008) .
«The A-Z of Programming Languages: JavaScript ». comput erworld.com.au. Pet er-Paul
Koch, Object det ect ion Pet er-Paul Koch, Mission Impossible - mouse posit ion Pet er-
Paul Koch, Browser det ect Flanagan, 2006, pp. 262–263. «Creat ing Accessible
JavaScript ». WebAIM. Consult ado el 8 de junio de 2010. ADsafe - Mak ing JavaScript
Safe for Advert ising Secure ECMA Script (SES) MozillaZine, Mozilla Cross-Sit e
Script ing Vulnerabilit y Report ed and Fixed «Advanced Debugging Wit h JavaScript ».
alist apart .com. 3 de febrero de 2009. Consult ado el 28 de mayo de 2010. «The
JavaScript Debugging Console». javascript .about .com. 28 de mayo de 2010. Consult ado
el 28 de mayo de 2010. JScript development in Microsoft Office 11 (MS InfoPat h
2003) «Opera DragonFly». Opera Soft ware. «Int roducing Drosera - Surfin' Safari».
Webk it .org. 28 de junio de 2006. Consult ado el 19
de mayo de 2009.BibliografíaFlanagan, David; Ferguson, Paula (2002) . JavaScript :
The Definit ive Guide (4.ª edición) . ISBN 0-5 96-00048-0.Enlaces ext ernosMozilla
Developer Cent erslice( ) - O'Reilly Answers (en inglés) Dist inción ent re variables
locales y globalesJavascript t ut orialCat egorías: Lenguajes de programaciónLenguajes
int erpret adosJavaScript Lenguajes de programación orient ada a objet osLenguajes de
programación basados en prot ot iposSoft ware de 1995 Net scapeMenú de navegaciónNo has
accedidoDiscusiónCont ribucionesCrear una
cuent aAccederArt ículoDiscusiónLeerEdit arVer hist orialBuscarBuscar en Wik ipedia
Port adaPort al de la comunidadAct ualidadCambios recient esPáginas nuevasPágina
aleat oriaAyudaDonacionesNot ificar un errorImprimir/export arCrear un libroDescargar
como PDFVersión para imprimirEn ot ros proyect osWik imedia CommonsWik ilibros
Wik iversidadHerramient asLo que enlaza aquíCambios en enlazadasSubir archivoPáginas
especialesEnlace permanent eInformación de la páginaElement o de Wik idat aCit ar est a
páginaEn ot ros idiomasDeut schEnglishFrançaisIt aliano한국어РусскийTagalogTiếng Việt 中
文80 másEdit ar enlacesEst a página se edit ó por últ ima vez el 10 ago 2018 a las
22:31.El t ext o est á disponible bajo la Licencia Creat ive Commons At ribución
Compart ir Igual 3.0; pueden aplicarse cláusulas adicionales. Al usar est e sit io,
ust ed acept a nuest ros t érminos de uso y nuest ra polít ica de privacidad. Wik ipedia®
es una marca regist rada de la Fundación Wik imedia, Inc., una organización sin ánimo
de lucro.Polít ica de privacidadAcerca de Wik ipediaLimit ación de
responsabilidadDesarrolladoresDeclaración de cook iesVersión para móvilesWik imedia
Foundat ion Powered by MediaWik i

You might also like