Saltar ao contido

JavaScript

Na Galipedia, a Wikipedia en galego.
(Redirección desde «Javascript»)
JavaScript
ParadigmaBaseado en prototipos,Programación orientada a obxectos
Data4 de decembrode1995
DeseñadorBrendan Eich
DesenvolvedorNetscape Communications,Mozilla Foundation
Última versión1.8.5[1]
Tipo de datoDébil, dinámico
Postas en funcionamentoKJS,Rhino,SpiderMonkey,V8,Carakan,Chakra
DialectosJavaScript estándar e JScript (Javascript paraIE)
Influído porJava
InfluíuActionScript,AtScript,CoffeeScript,Dart,JScript.NET,Objective-J,QML,TypeScript,LiveScript

JavaScript(JS) é unhalinguaxe de programación interpretada,é dicir, que non requirecompilación,utilizada principalmente enpáxinas web,cunha sintaxe semellante á daLinguaxe Javae alinguaxe C.

Ao contrario queJava,JavaScript non é unha linguaxeorientada a obxectospropiamente[2],xa que non dispón deherdanza,é máis ben unha linguaxebaseado en prototipos,xa que as novas clases xéranse clonando as clases base (prototipos) e estendendo a súa funcionalidade.[3]

Todos osnavegadoresinterpretan o código JavaScript integrado dentro das páxinas web. Para interactuar cunha páxina web provese á linguaxe JavaScript dun desenvolvemento doDOM.O seu uso máis estendido atópase en páxinas webHTMLpara realizar tarefas e operacións no marco da aplicación unicamente cliente, sen acceso a funcións do servidor. JavaScript execútase noaxente de usuarioao mesmo tempo que as sentenzas van descargándose xunto co códigoHTML.

A linguaxe foi inicialmente definida porBrendan Eichna empresaNetscape Communications.Netscape buscaba unha linguaxe interpretada máis lixeira que complementase á linguaxeJavaatraendo a programadores non profesionais dunha forma semellante aoMicrosoft Visual Basic.[4]

Inicialmente déuselle o nome deMocha,e posteriormenteLiveScriptnas súas primeiras inclusións en versións beta doNetscape Navigator 2.0,en setembro de1995.Foi renomeada coma JavaScript nun anuncio conxunto de Netscape e Sun[5]cando se lanzou na versión 2.0B3 do navegador de Netscape.[6]

O nome final deJavaScriptcausou confusión dando a impresión de que a linguaxe era derivada deJava,polo que a elección do nome foi caracterizada coma unha manobra de mercadotecnia de Netscape para darlle máis renome grazas á popularidade da outra linguaxe.[7][8]

Adopción por parte de Microsoft

[editar|editar a fonte]

As tecnoloxías deMicrosoft WindowsVBScripteJScriptlanzáronse en1996.JScript, adaptado dende o JavaScript de Netscape, formou parte do lanzamento o 16 de xullo de 1996 doInternet Explorer 3,ademais de incluírse do lado do servidor noInternet Information Server.IE3 tamén incluíu o primeiro soporte de Microsoft paraCSSe varias extensións deHTML,pero os desenvolvementos eran notablemente diferentes ás doNetscape Navigator.[9][10]

Estandarización

[editar|editar a fonte]

En1997os autores propuxeron JavaScript para que fose adoptado como estándar daEuropean Computer Manufacturers Association (ECMA),que a pesar do seu nome non é europea senón internacional, con sede enXenebra.Enxuñode1997foi adoptado como un estándar ECMA, co nome deECMAScript.En1998foi a linguaxe foi adaptada áISO/IEC-16262. A última versión do estándarECMAScripté a 5.1, que data do ano2011.[11]

Ademais, para evitar incompatibilidades, oWorld Wide Web Consortiumdeseñou o estándarDocument Object Model(DOM, o Modelo de Documento Obxecto), que incorporanKonqueror,as versións 6 deInternet ExplorereNetscape Navigator,Operaversión 7, eMozilla Application SuiteeMozilla Firefoxdesde a súa primeira versión.

Características

[editar|editar a fonte]

Algunhas das características compartidas polas distintas versións de JavaScript son:

Exemplos de sintaxe

[editar|editar a fonte]

Definición de variables

[editar|editar a fonte]

Asvariablesen JavaScript defínense empregando a palabra chavevar[12]

varx;// defines the variable x, although no value is assigned to it by default
vary=2;// defines the variable y and assigns the value of 2 to it

Oscomentariosdo exemplo anterior van precedidos polos caractéres "//".

Función recursiva

[editar|editar a fonte]

Unhafunción recursivasinxela sería da forma:

functionfactorial(n){
if(n===0){
return1;
}
returnn*factorial(n-1);
}

Exemplo avanzado

[editar|editar a fonte]

Cálculo domínimo común múltiplode dous números:

/* Finds the lowest common multiple (LCM) of two numbers */
functionLCMCalculator(x,y){// constructor function
varcheckInt=function(x){// inner function
if(x%1!==0){
thrownewTypeError(x+"is not an integer");// throw an exception
}
returnx;
};
this.a=checkInt(x)
// semicolons ^^^^ are optional, a newline is enough
this.b=checkInt(y);
}
// The prototype of object instances created by a constructor is
// that constructor's "prototype" property.
LCMCalculator.prototype={// object literal
constructor:LCMCalculator,// when reassigning a prototype, set the constructor property appropriately
gcd:function(){// method that calculates the greatest common divisor
// Euclidean algorithm:
vara=Math.abs(this.a),b=Math.abs(this.b),t;
if(a<b){
// swap variables
t=b;
b=a;
a=t;
}
while(b!==0){
t=b;
b=a%b;
a=t;
}
// Only need to calculate GCD once, so "redefine" this method.
// (Actually not redefinition—it's defined on the instance itself,
// so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.
// Note that this leads to a wrong result if the LCMCalculator object members "a" and/or "b" are altered afterwards.)
// Also, 'gcd' === "gcd", this['gcd'] === this.gcd
this['gcd']=function(){
returna;
};
returna;
},
// Object property names can be specified by strings delimited by double ( ") or single (') quotes.
lcm:function(){
// Variable names don't collide with object properties, e.g., |lcm| is not |this.lcm|.
// not using |this.a * this.b| to avoid FP precision issues
varlcm=this.a/this.gcd()*this.b;
// Only need to calculate lcm once, so "redefine" this method.
this.lcm=function(){
returnlcm;
};
returnlcm;
},
toString:function(){
return"LCMCalculator: a ="+this.a+",b ="+this.b;
}
};

// Define generic output function; this implementation only works for Web browsers
functionoutput(x){
document.body.appendChild(document.createTextNode(x));
document.body.appendChild(document.createElement('br'));
}

// Note: Array's map() and forEach() are defined in JavaScript 1.6.
// They are used here to demonstrate JavaScript's inherent functional nature.
[[25,55],[21,56],[22,58],[28,56]].map(function(pair){// array literal + mapping function
returnnewLCMCalculator(pair[0],pair[1]);
}).sort(function(a,b){// sort with this comparative function
returna.lcm()-b.lcm();
}).forEach(function(obj){
output(obj+",gcd ="+obj.gcd()+",lcm ="+obj.lcm());
});

Esta función dará coma resultado nun navegador:

LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638

Uso en páxinas web

[editar|editar a fonte]
Véxase tamén:HTML dinámico.

O uso máis común do JavaScript é engadir comportamentos do lado do cliente ás páxinasHTML,o que se coñece comaHTML dinámico(DHTML). Osguiónsinclúense dende as páxinasHTMLe interactúan coDOMda páxina.

Debido a que o código do JavaScript pode executarse localmente nonavegadordo usuario no canto de facelo nunservidor,o navegador pode responder ás accións do usuario de forma rápida, facendo que as aplicacións teñan un tempo de resposta maior. Ademais, o código JavaScript pode detectar accións de usuario que o HTML non pode por si mesmo. Moitas aplicacións, coma por exemploGmail,aprovéitanse destas funcións, empregando JavaScript na súas lóxicas deinterface de usuario.

  1. Developer.mozilla.org, ed. (18 de novembro de 2012)."New in JavaScript 1.8.5 | Mozilla Developer Network"(en inglés).Arquivado dendeo orixinalo 25 de decembro de 2018.Consultado o 26 de maio de 2013.
  2. "ECMAScript Language Specification"(PDF)(en inglés).Arquivado dendeo orixinal(PDF)o 12 de abril de 2015.Consultado o 17 de marzo de 2015.
  3. The Little JavaScripter(eninglés)
  4. Severance, Charles (febreiro de 2012)."JavaScript: Designing a Language in 10 Days".Computer(en inglés)45(2) (IEEE Computer Society). pp. 7–8.doi:10.1109/MC.2012.57.Consultado o 23 de marzo de 2013.
  5. Press release announcing JavaScript,"Netscape and Sun announce JavaScript", PR Newswire. 4 de decembro de 1995(eninglés)
  6. "TechVision: Innovators of the Net: Brendan Eich and JavaScript"(en inglés).Web.archive.org. Arquivado dendeo orixinalo 08 de febreiro de 2008.Consultado o 17 de marzo de 2015.
  7. "Programming languages used on the Internet and the World Wide Web (WWW)"(en inglés).Webdevelopersnotes.com.Consultado o 19 de maio de 2009.
  8. "O'Reilly - Safari Books Online - 0596101996 - JavaScript: The Definitive Guide, 5th Edition"(en inglés).Safari.oreilly.com. Arquivado dendeo orixinalo 08 de decembro de 2008.Consultado o 19 de maio de 2009.
  9. Champeon, Steve (4 de xuño de 2001)."JavaScript: How Did We Get Here?".O'Reilly Media. Arquivado dendeo orixinalo 19 de xullo de 2016.Consultado o 9 de marzo de 2015.
  10. "Microsoft Internet Explorer 3.0 Beta Now Available".Microsoft. 29 de maio de 1996.Consultado o 9 de marzo de 2015.
  11. "Standard ECMA-262"(PDF).Arquivado dendeo orixinal(PDF)o 12 de abril de 2015.Consultado o 26 de maio de 2013.
  12. "var - JavaScript - MDN".TheMozilla Developer Network.Consultado o 22 de decembro do 2012.

Véxase tamén

[editar|editar a fonte]

Outros artigos

[editar|editar a fonte]

Bibliografía

[editar|editar a fonte]

Ligazóns externas

[editar|editar a fonte]