Džavaskript ili Javaskript (engl. JavaScript) je skriptni programski jezik koji se prvenstveno koristi za definisanje funkcionalnosti veb stranica na klijentskoj strani. Dinamičan, slabo tipiziran jezik, sa skromnom podrškom za objektno orijentisano programiranje, on ustvari predstavlja implementaciju standarda Ekmaskript.

Iako je prvobitna ideja bila da Javaskript liči na Javu[1], on ne sadrži nijedan ključni element Jave osim onih koje su oba nasledili iz C-a. Jezik je najpoznatiji po programiranju klijentske funkcionalnosti veb stranica, ali se može koristiti i kao skriptni jezik za pristup objektima u drugim aplikacijama.

Jezik se prvo zvao „Lajvskript“ (engl. LiveScript), ali je ime promenjeno u Javaskript, zbog marketinškog dogovora između Netskejpa i Sana. Ključni elementi dizajna Javaskripta su nasleđeni iz programskog jezika Self.

Istorijat

uredi

Sledeća tabela se zasniva na informacijama iz više izvora.[2][3][4]

Verzija Datum Ekvivalentno sa Netskejp
Navigator
Mozila
Fajerfoks
Internet
Eksplorer
Opera Safari Gugl
Hrom
1.0 Mart 1996 2.0 3.0
1.1 Avgust 1996 3.0
1.2 Jun 1997 4.0-4.05 3[5]
1.3 Oktobar 1998 ECMA (engl. ECMA)-262 1. + 2. izdanje 4.06-4.7x 4.0 5[6]
1.4 Netskejp
Server
6
1.5 Novembar 2000 ECMA-262 3. izdanje 6.0 1.0 5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 5.8)
7.0 3.0-5 1.0-10.0.666
1.6 Novembar 2005 1.5 + dodaci nizovima + generatori nizova i stringova + E4X 1.5
1.7 Oktobar 2006 1.6 + pajton generatori + iteratori + dozvole 2.0 28.0.1500.95
1.8 Jun 2008 1.7 + generatori izraza + zatvarači izraza 3.0 11.50
1.8.1 1.8 + podrška za JSON(engl. JSON) + manji dodaci 3.5
1.8.2 Jun 22, 2009 1.8.1 + manji dodaci 3.6

Karakteristike

uredi
 
Logo programskog jezika Javaskript

Struktura programskog jezika Javaskript je veoma slična strukturi programskog jezika C (for petlja, while petlja, if iskaz...). Jedan delimičan izuzetak su tipovi promenljivih. U Javaskript-u svaka promenljiva se inicijalizuje sa ključnom reči var. Kao i C, Javaskript pravi razliku između iskaza i izraza. Još jedna bitna razlika u odnosu na C je i automatsko umetanje kraja naredbe odnosno karaktera tačka-zarez. Dakle, u Javaskript-u nije potrebno eksplicitno naglašavati kraj naredbe sa znakom tačka-zarez. Javaskript je slabo tipiziran jezik. To znači da ukoliko imamo neku promenljivu koja je vezana za broj, ta ista promenljiva kasnije može biti vezana za string.[7]

Javaskript je objektno zasnovan skriptni jezik. Uključujemo ga u internet stranicu da bi je učinili dinamičnijom. Javaskript je skriptni jezik jer se sastoji od serije komandi koje se očitavaju u interpreteru a da se prethodno ne kompajlira sadržaj. Odnosno ne prevodi se u mašinski (binarni kod 1 i 0) iz koga nikada nećemo saznati originalni jezik, nego se komande direktno čitaju iz koda. Zbog ove karakteristike, Javaskript se izvršava na strani korisnika, tj. na računaru na kojem je pokrenut sadržaj sa Javaskript kodom. Sam po sebi, HTML dozvoljava posetiocu da pošalje podatke ka serveru na obradu. Nažalost, ako ti podaci nisu validni ceo proces se mora ponoviti sve dok se ne unesu validni podaci. Ovo je jedan od osnovnih razloga nastanka Javaskript-a koji proverava verodostojnost podataka na klijentovom pretraživaču.[8]

Sintaksa

uredi

Jednostavniji primeri

uredi

Promenljive se u Javaskript-u definišu sa ključnom reči var. [9]

var x; // дефиниција променљиве x. Почетна вредност ове променљиве је недефинисана (eng. undefined). 
var y = 2; // дефиниција променљиве y и додела вредности 2.

Komentari se u Javaskript-u pišu na sledeći na sledeći način.

// кратак коментар у једној линији.
/*
     Дугачак, документацијски коментар.
     Написан у више линија.
*/
/*Коментар /* не сме бити угњежден. */Ово је синтаксна грешка*/

Za ispis teksta na ekranu, koristi se objekat konzole. U primeru je dato ispisivanje teksta Zdravo Svete.

console.log("Zdravo Svete.");

Iskazi if, else i else if [8]

// if исказ се користи ради активирања одређених наредби ако је одређени услов задовољен.

function funkcija4(){
  var boja = prompt("Koju boju najviše voliš?")
  if (boja == "rozu") {
       alert("Verovatno si žensko");
      }
  }
// else исказ се извршава онда када if услов није задовољен.

function funkcija2() {
  var broj = prompt("Unesite bilo koji broj!")
    if (broj <= 10) {
            alert("Uneli ste broj manji od 10");
        }
    else alert("Uneli ste broj veći od 10") 
    }
// else if исказ је веома користан јер дозвољава да се наведе више од једног услова.

var visitor= "";
if (visitor == "Drago" {
document.write("Pozdrav Drado...");
}
 else if (visitor == "Miloje") {
      document.write("Pozdrav Miloje...");
} 
else if(visitor == "Laki") {
      document.write("Pozdrav Laki...");
} 
else {
      document.write("Pozdrav posetioče...");
}

Jednostavna rekurzivna funkcija koja računa faktorijel.

function factorial(n) {
    if (n == 0) {
        return 1;
    }
    return n*factorial(n - 1);
}

Primer anonimne funkcije

var displayClosure = function() {
    var count = 0;
    return function () {
        return ++count;
    };
}
var inc = displayClosure();
inc(); // враћа 1
inc(); // враћа 2
inc(); // враћа 3

Napredniji primer

uredi

Ovaj uzorak koda prikazuje razne Javaskript funkcije.

function LCMCalculator(x, y) {
    var checkInt = function (x) {
        if (x % 1 !== 0) {
            throw new TypeError(x + " is not an integer");
        }
        return x;
    };
    this.a = checkInt(x)
    this.b = checkInt(y);
}
LCMCalculator.prototype = {
    constructor: LCMCalculator,
    gcd: function () { 
        var a = Math.abs(this.a), b = Math.abs(this.b), t;
        if (a < b) {
            t = b;
            b = a;
            a = t;
        }
        while (b !== 0) {
            t = b;
            b = a % b;
            a = t;
        }
        this['gcd'] = function () {
            return a;
        };
        return a;
    },
    lcm : function () {
        var lcm = this.a/this.gcd()*this.b;
        this.lcm = function () {
            return lcm;
        };
        return lcm;
    },
    toString: function () {
        return "LCMCalculator: a = " + this.a + ", b = " + this.b;
    }
};
function output(x) {
    document.body.appendChild(document.createTextNode(x));
    document.body.appendChild(document.createElement('br'));
}

[[25, 55], [21, 56], [22, 58], [28, 56]].map(function (pair) {
    return new LCMCalculator(pair[0], pair[1]);
}).sort(function (a, b) {
    return a.lcm() - b.lcm();
}).forEach(function (obj) {
    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
});

Upotreba u internet stranicama

uredi

Najčešća upotreba Javaskript-a je dodavanje dinamičnosti HTML stranicama na klijentskoj strani. Skripte se uključuju u HTML stranice i vrše interakciju sa objektnim modelom dokumenata (engl. Document Object Model). Neki od primera upotrebe Javaskript-a su:

  • Učitavanje određenog dela stranice ili dostavljanje podataka serveru preko AJAKSA (engl. AJAX) bez ponovnog osvežavanja cele stranice (na primer društvena mreža vam omogućava ažuriranje novog statusa bez osvežavanja cele stranice).
  • Animiranje elemenata na stranici, čineći ih vidljivim i nevidljivim, menja elementima veličinu, pomera njihov sadržaj.
  • Ubacivanje interaktivnog sadržaja (na primer video klipova, animacija, video igrica, audio sadržaja...)
  • Validacija unetog sadržaja unutar formi, kako bi bili sigurni da su ispravni podaci poslati serveru.

Internet pretraživač je najčešće okruženje za izvršavanje Javaskript koda. Internet pretraživači obično kreiraju host objekte za predstavljanje objektnog modela dokumenata u Javaskript-u. Pored internet pretraživača, Javaskript kod se može izvršiti i na serveru.[10]

Jednostavna skripta

uredi

Ispod je minimalistički primer internet stranice koja koristi Javaskript i objektni model dokumenata.

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>Minimal Example</title>
<body>
<h1 id="header">Ovo je Javaskript</h1>

<script>
    document.body.appendChild(document.createTextNode('Zdravo Svete!'));

    var h1 = document.getElementById('header');
    h1 = document.getElementsByTagName('h1')[0];
</script>

<noscript>Vaš pretraživač ne podržava Javaskript ili je trnutno isključen.</noscript>
</body>
</html>

Kompatibilnost

uredi

S obzirom da JavaSkript kod može da se izvrši u različitim okruženjima, važan deo testiranja koda je i provera da li Javaskript kod radi na više različitih pretraživača.

Interfejs objektnog modela dokumenata za manipulaciju sa internet stranicama nije deo Ekmaskript standarda odnosno samog Javaskript-a, već je definisan posebnim standardom. U praksi, implementacija internet pretraživača se razlikuje u standardima, i samim tim ne izvršava svaki pretraživač Javaskript kod isto.

Da bi se ove razlike anulirale, Javaskript programeri mogu da pokušaju da napišu kod koji će se u većini pretraživača izvršavati isto. Ako se ne izvrši, moguće je napisati kod koji proverava prisustvo određenih vunkcija pretraživača.[11] U nekim slučajevim, dva pretraživača mogu izvršiti istu funkciju ali sa različitim ishodom. Tako da programer može praktično otkriti šta pretraživač radi i shodno tome izmeniti svoju skriptu kako bi je pretraživač izvršio na odgovarajući način.[12][13]

Osim toga, skripte ne mogu da rade za određene korisnike. Na primer korisnik može da:

  • Koristi stari ili redak internet pretraživač sa nepotpunom ili neobičnom podrškom za objektni model dokumenata.
  • Koristi PDA (engl. personal digital assistant) ili pretraživač na mobilnom telefonu koji ne može da izvrši Javaskript kod.
  • Da ima onemogućeno izvršavanje Javaskript-a kao meru predostrožnosti.

Kako bi pomogli ovim korisnicima, programeri mogu da naprave internet stranice koje degradiraju pretraživače da ne koriste Javaskript. Konkretno, strana bi trebala ostane upotrebljiva bez dodatnih elemenata Javaskript-a. Alternativni pristup rešavanju ovog problema jeste da prvi autor sadržaja koristi osnovne tehnologije koje rade u svim pretraživačima, a zatim poboljša sadržaj namenjen korisnicima koji podržavaju Javaskript. Ovo je poznato kao progresivno poboljšanje.

Reference

uredi
  1. ^ Netskejp, „Kako učiniti veb stranice živim“ - Brendan Ajh, tvorac Javaskripta
  2. ^ „JavaScript – JScript – ECMAScript version history”. Webmasterworld.com. Pristupljeno 30. 4. 2016. 
  3. ^ John Resig. „Versions of JavaScript”. Ejohn.org. Pristupljeno 30. 4. 2016. 
  4. ^ „Version Information (JScript)”. Msdn.microsoft.com. Pristupljeno 30. 4. 2016. 
  5. ^ History of the Opera Web browser#Version 3
  6. ^ „What Version of JavaScript”. 
  7. ^ Flanagan 2006, str. 16.
  8. ^ a b „Uvod u Javaskript”. znanje.org. Pristupljeno 30. 4. 2016. 
  9. ^ „var – JavaScript – MDN”. The Mozilla Developer Network. Pristupljeno 30. 4. 2016. 
  10. ^ „JavaScript tracking – Piwik”. Piwik. Pristupljeno 30. 4. 2016. 
  11. ^ Peter-Paul Koch, Object detection
  12. ^ Peter-Paul Koch, Mission Impossible – mouse position
  13. ^ Peter-Paul Koch, Browser detect

Vidi još

uredi

Spoljašnje veze

uredi