Edukira joan

JavaScript

Wikipedia, Entziklopedia askea
 JavaScript
Jatorria
Sorrera-urtea1996
Argitaratze-data1995
Azken bertsioaECMAScript 2024
Honen izena daramaJava
Aurkezpen data1995eko abenduaren 4a
Ezaugarriak
Programazio paradigmaProgramazio funtzional, generic programming (en) Itzuli, aspect-oriented programming (en) Itzuli, gertaeretara zuzendutako programazioa, prototype-based programming (en) Itzuli eta Programazio inperatibo
Media motatext/javascript, application/x-ecmascript, application/x-javascript, text/javascript1.0, text/javascript1.1, text/javascript1.2, text/javascript1.4, text/javascript1.3, text/javascript1.5, text/livescript, text/x-ecmascript eta text/x-javascript
Deskribapena
OinarrituaECMAScript
Honen eragina jaso duScheme, Self (en) Itzuli, Java, C, LiveScript (en) Itzuli, Lua, Perl, AWK (en) Itzuli, HyperTalk eta Python
Kokapena
JabeaSun Microsystems eta Oracle Corporation
Ekoizpena
DiseinatzaileaBrendan Eich
ecma-international.org…

JavaScript interpretatutako programazio lengoaia bat da. JavaScript-ek idazkera dinamiko eta objetuei bideratutako sintaxia dauka. HTML eta CSSrekin batera Webaren oinarrizko hiru teknologietako bat da.

JavaScript-ek web orri elkarreragileak baimentzen ditu eta web aplikazioetan funtsezkoa da.

Web orri gehienak JavaScript erabiltzen dute. Gainera, web nabigatzaile gehienak JavaScript-erako motor dedikatu bat dute.

Historia

Sorrera

Hasi baino lehen, Netscape Communiactionsek Sun Microsystems-ekin aritu zen elkarlanean, Sun-ek egindako programazio lengoaia, Java, Netscape Navigator-en implementatzeko. Elkarlan hau, Microsoft-ekin lehiatzeko egin zen. Netscape Communications-ek egin nahi zuen lengoaiak, Java konplementatuko zuela eta antzeko sintaxia behar zuela erabaki zuen. Horrek ondorioztatzen zuena, beste programazio lengoaiak baztertuta geratzea zen.

JavaScript-en ideia babesteko beste proposamenengandik, enpresak prototipo baten beharra zuen. Eich-ek lehen prototipoa 10 egunean garatu zuen 1995eko maiatzean.

Hasierako garapenean Mocha izena bazuen ere, 1995eko irailean argitaratutako Netscape Navigator nabigatzailearen 2.0 beta bertsioetan LiveScript izena hartu zuen. 1995eko abenduan argitaratutako Netscape Navigator 2.0 beta 3 bertsioan bataiatu zuten behin betiko JavaScript bezala.

Estandarizazioa

1996ko azaroan, Netscape-k JavaScript ECMA International-era bidali zuen, estandar espezifikazio bat landu ahal izateko. Beste saltzaileek inplementatzeko aukera izango zuten, Netscape-k egindako lanean oinarrituz. Honen eraginez, ECMAScript argitaratu zen, ECMA-262 ren lehenengo edizioan, 1997-ko ekainean, JavaScript izanez inplementatutakoen ospetsuena. ActionScript eta JScript ere izan ziren inplementatutako lengoaiak.

Geroko garapenak

JavaScript sareko programazio lengoaia ezagunetako bat bihurtu da. Hala ere, hasieran programatzaile askok JavaScript iraindu zuten, baino Ajax-en sarrerarekin, JavaScript berriro bereizi zen eta programatzaile profesional askoren arreta erakarrik zuen.

Honen eraginez, framework eta fitxategi sakon ugari agertu eta JavaScript-en egindako praktikak hobetu ziren, eta azkenik JavaScript web nabigatzaileetatik kanpo erabiltzen hasi zen.

2009ko urtarrilean, CommonJS projektua sortu zen, JavaScript-i nabigatzaileetatik kanpo hobekuntzak egiteko.

Ezaugarriak

Datu Motak

Aldagaiei hasierako balio bat esleitzen zaie, hori eginez, aldagai horri balioaren mota ezartzen zaio.

JavaScript-en horrela adierazten dira esleipenak:

var zenb = 0;

Esleitu eta gero, horrela aldatzen dira aldagaiak:

zenb = 2;

Datu mota bakunak

JavaScript-ek ondorengo oinarrizko datu motak ezagutzen ditu:

  • Boolearrak:

Bi balio bakarrik onartzen ditu: false (faltsua) eta true (egiazkoa).

var egiazkoa = true;

var faltsua = false;
  • Zenbakiak:

Adibidez: 10, 0.8, -4.2...

var zenbakia = 5;

var zenbakianeg = -5;
  • Karaktere kateak edo string-ak:

Adibidez: 'Kaixo mundua!', 'Egunon'...

var nireIzena = "Izen bat";

var karakterea= "F";

Datu mota egituratuak

Hauek dira JavaScript-en datu mota egituratuak:

  • Bektoreak

Objetuak dira, metodo eta propietateak dituzte, non programatzaileak edozein unetan erabil ditzake. Adibidez: (0, 2, 4).

var nireArray = new Array(1, 3, 5);

var besteArray = new Array();

var nireArray = new Array[1, 3, 5];

var besteArray = [];
  • Objetuak
var nireObjetua = new Object();
var nireObjetua = {};

Agindu motak

JavaScript-en oinarrizko aginduak  bi dira, balioen esleipena (var a = 2) eta datu-idazketak (print).

Datuen irakurketa aldiz, input funtzioa erabiltzen da.

Kontrol Egiturak

Baldintzapeneko egiturak:

Batzuetan, kode bloke batean, exekuzio fluxua kontrolatzea interesatzen zaigu alternatibak ezarriz, hau da, zenbait adierazpen baldintza baten arabera exekutatzen direla. Hori ahalbidetzeko baldintza egitura ezberdinak ezberditzen ditugu.

If..Else

Baldintza bat betetzen den egiaztatzeko IF egiturak erabiliko ditugu. Kontrol egitura mota hau programazio lenguia guztietan aurkitzen da.

if (kondizioa) {
    kodea_A;
} else {
    kodea_B;
}

Azter dezagun beraz adibide hau. IF baldintza esprisio boolear baten bidez adierazten da, hau da, lehenengo baldintza betetzen bada jarraian duen kode zatia exekutatuko du (giltzen artean aurkitzen den kodea). Baldintza hau ez bada betetzen eta else adarra baldin badago, adar honetan dagoen kodea exekutatuko da. Else adarrik ez badago ordea, egitura hau bukatutzat ematen da eta ez da ezer gehiago egingo. Else adarra hautazko adarra da. Esaterako jarraian ikus daitekeen adibide kodean ez da else adarrik erabiltzen, if egitura sinplea da:

if (n < 0) {
    n = -n;  // balio absolutua
}

Beste zati honetan berriz egitura osoa ikus dezakegu:

// zenbaki handiena kalkulatzeko
var a = prompt("sakatu bi zenbakietako bat: ");
var b = prompt("sakatu bestea: ");
var hand;

if (a > b) {
    hand = a;
} else {
    hand = b;
    console.log("Handiena", hand);
}

Ondoko nabardura hauek hartu azpimarratu behar dira: Elif adarra else adarraren oso antzekoa da. Adar honek, hasierako baldintza betetzen ez bada, beste baldintza bat betetzen den egiaztatuko du. Bigarren baldintza hau betetzen bada dagokion kodea exkutatuko da. Erabiltzaileak nahi adina elif adar erabil ditzake.

if (ordua < 12) {
    console.log("Egun on");
} else if (ordua < 20) {
    console.log("Arratsaldeon");
} else {
    console.log("Gabon");
}
Switch

Ikusi dugun bezala if-elif-else ri esker une bakoitzean baldintza batzuen arabera nola jokatu aukera dezakegu. Batzuetan ordea balio batzuen artean bakarrik aukeratu nahi dugu, eta dagokion kodea exekatu aldagai batzuen balioa eta funtzio batek itzultzen duen balioaren arabera. Kodea garbi eta irakurgarri mantentzeko, ainbat if kasu erabili ordez switch-case erabil dezakegu:

switch (variable) {
   case balioa1:
      // 1 balioarentzako kodea
      break;
   case balioa2:
      // 2 balioarentzako kodea
      break;
   case balioa3:
   case balioa4:
   case balioa5:
      // 3, 4 eta 5 baioentzako kodea
      break;
   default:
      // aurreko balioetako bat ez bada exekatu kode hau
}

Adibide honetan, aldagaiaren zenbait balio egiaztatzen ditugu, eta, horrela, bakoitzak egoera desberdinen arabera kode desberdin bat exekutatzeko aukera ematen du. Orain, value3, value4 eta value5 aztertzen baditugu, value5 azpian agertzen den kodea soilik exekutatuko dela ondoriozta dezakegu, gainontzeko balioak hutsik daudelako, baina baita hausteko klausula (break) ez dutelako. Erreserbatutako hitz honek Javascript kodea exekutatzen duen puntuan mozten du, kodean dagoen blokea utziz. Horrek ere lagunduko digu, adibidez, begizten kasuetan.

Honekin, switch kodea baldintzez baliatuz exekutatu dezakegu, baina if batekin egin behar ditugun eragiketa konplexurik gabe. Hala ere, switch ezin da inoiz ordezkatu if bategatik, alderantziz gerta daitekeen bezala.

Iterazio-egiturak

while kontrol-egitura

Egitura errepikakor (loop) orokorrena while da. Adibide honetan erabilera sinplea azaltzen da:

while (iterazioa_jarraitzeko_baldintza) {
    // aginduak
}

Baldintza honek, emandako baldintza exekutatuko du emandako espresioa egia den bitartean.

Kontrol iterazio honek break eta continue espresioak aitortzen ditu.

do...while kontrol egitura

do...while aginduak emandako adierazpena exekutatuko du emandako baldintza bete izanez gero.

hala ere, while instrukzioa ez bezala, kontrol egitura honek beti exekutatuko du emandako adierazpena, gutxienez behin.

do {
    c += 1;
} while (c < 10);
for kontrol-egitura

Agindu honek iterazioaren baldintzari buruz kontrol gehio baimentzen du. Hasierako espresioa behin exekutatzen da, eta baldintza beti aztertzen da iterazioaren hasieran

Biraren bukaeran, egindako aldaketak exekutatzen dira beti baldintza aztertu baino lehen. Horrela adierazten da for agindua:

for (<Hasierako espresioa>; <baldintza>; <bukaerako espresioa>)

Adibidez:

var c;

for (c = 0; c < 10; c += 1) {
    //aginduak
}
break eta continue aginduak

break aginduak begiztaren exekuzioan bat-bateko amaiera eragiten du, continue aignduak berriz, baldintza egiaztatzen du begizta berrabiarazi baino lehen.

Funtzioak

Funtzio bat helburu, helburu edo zeregin bat osatzeko egin beharreko ekintza da. Helburu konplexuak zeregin sinpleagoetan zatitzea ahalbidetzen du, scriptak kudeatzea eta mantentzea errazten dutenak. Parametro edo argumentu bat funtzio batera igortzen diren datuak dira, egin beharreko ekintza burutzeko. Funtzioak zero argudio edo gehiago pasa daitezke. Funtzioa bat, funtzio horri scriptaren, orrialde beraren edo kanpoko orrialdeko edozein lekutatiik deitzen zaionean exekutatzen da. Funtzioak beti ziurtatuta daude exekutatutakoan balioren bat itzultzeko. Egikaritutakoan funtzio batera igorritako datuak funtzioaren sarrera gisa ezagutzen dira eta funtzio exekutatu batetik itzultzen den balioa funtzioaren irteera bezala ezagutzen da.

JavaScripten berezitasunetako bat, zera da, azpiprogramak ez dituela.

Hona hemen adibide batzuk:

function hello() {
  alert("Hello, World!");
}
function stepToFive(number) {
  if (number > 5) {
    number -= 1;
  }
  if (number < 5) {
    number += 1;
  }
  return number;
}


Sintaxia eta semantika

Hizkuntzaren azkeneko bertsioa ECMASCript 2016 da, 2016ko uztailaren 17an publikatua.

JavaScript-en, aldagaiak var hitza erabiltzen definitzen dira:

Aldagaiak

var x; // x aldagaia definitzen du, nahiz eta baliorik ez eman

var y = 2; // y aldagaia definitzen du, eta 2 balioa ematen dio

Xehetasunak adierazteko,bi barra diagonal erabiltze dira, gorako adibidean bezala.

Ez dira existitzen Input/output funtzionalitateak lengoaia honetan, exekuzioak ematen digulako aukera hori. Hala eta guztiz ere, exekuzio ingurune gehienek, 'console' izeneko objektu bat dauka, ausazko fluxu irteeran inprimatuko duena.

console.log("Hello world!");

Funtzio errekurtsiboa:

function factorial(n) {

    if (n === 0) {

        return 1;

    }

    return n * factorial(n - 1);

}

Lambda funtzioko adibideak (edo funtzio anonimoak)

var displayClosure = function() {

    var count = 0;

    return function () {

        return ++count;

    };

}

var inc = displayClosure();

inc(); // Itzultzen du 1

inc(); // Itzultzen du 2

inc(); // itzultzen du 3

Dei automatikoko espresioak:

Funtzioei aldagaiak parametro bezala ematea eskeintzen du

var v;

v = 1;

var getValue = (function(v) {

  return function() {return v;};

}(v));

v = 2;

getValue(); // 1

Erabilera Web Orrietan

Javascripten elabilera zabalena kapsulatutako funtzioak HTML orrietan idaztea da. Hauek, orriaren Document Object Model-arekin elkar-eragiten dute. Hona hemen adibide batzuk:

  • Eduki berria kargatzea orriarentzat edo zerbitzariari datuak bidaltzea AJAX bitartez, orria berriz kargatru behar izangabe.
  • Orrian dauden elementuen animazioa, desagertaraztea, beraien tamaina aldatzea, mugitzea...
  • Elkar-eragiten duen edukia, jokoak edoaudio edo bideoen erreprodukzioa adibidez
  • Web inprimaki baten sarrerako balioak balioztatzea zerbitzarira bidali aurretik onargarriak direla ziurtatzeko.
  • Erabiltzaileek irakurtzeko ohiturei eta arakatze-jarduerei buruzko informazioa hainbat webguneetara igortzea.


JavaScript kodea erabiltzailearen arakatzailean lokalki exekutatu daitekeenez (urruneko zerbitzarian beharrean), arakatzaileak erabiltzailearen ekintzetara azkar erantzun dezake, aplikazio sentikorragoa bihurtuz. Bestalde, JavaScript kodeak HTML bakarrak ezin dituen erabiltzaileen ekintzak hauteman ditzake, hala nola, teklak. Gmail bezalako aplikazioek ondo aprobetxatzen dute: erabiltzaile interfazearen logika gehienak JavaScript-en idatzita daude, eskaerak zerbitzarira bidaliz (adibidez, mezu elektroniko baten edukia). Ajax programazioa gero eta gehiago erabiltzeko joerak teknika hori modu berean ustiatzen du.


JavaScript motorra (JavaScript interprete edo JavaScript inplementazioa bezala ere ezaguna) JavaScript iturburu kodea interpretatzen du eta gidoia horren arabera exekutatzen du. Lehen JavaScript motorra Brendan Eich-ek sortu zuen Netscape Communications Corporation-en, Netscape Navigator web arakatzailearentzat. SpiderMonkey izeneko motorra C-n dago martxan. Ordutik, eguneratu egin da (JavaScript 1.5) ECMA-262 3. edizioa betetzeko. Rhino motorra, batez ere Norris Boyd-ek sortua (Netscape aurretik, orain Google-n) Javascript-en inplementazioa da Java-n. Rhino, SpiderMonkey bezala, ECMA-262 3. edizioarekin bateragarria da.


Web arakatzailea Javascript-eko ostalari ohikoena da. Web arakatzaileek maiz jaiotzen ez diren objektuak sortzen dituzte, denborarik ez duen ingurunearen mende, Document Object Model (DOM) JavaScript-en irudikatzeko. Web zerbitzaria beste zerbitzu ingurune arrunt bat da. Javascript web zerbitzariak normalean objektu propioak azaltzen ditu HTTP eskaera eta erantzun objektuak irudikatzeko; horrela, JavaScript programa batek galdetu eta manipulatu lezake web orriak dinamikoki sortzeko.

Javascript arakatzaile ezagunen laguntza partekatzen duten hizkuntza bakarra denez, beste hizkuntza batzuetako marko askok biltzen duten hizkuntza bihurtu da, nahiz eta JavaScript ez izan helburu horietarako diseinatuta. Hala ere. Bere izaera dinamikoari dagozkion errendimendu-mugen artean, JavaScript motorren abiadura handitzeak konpilazio-ingurune harrigarria bihurtu du.