Јаваскрипт

Из Википедије, слободне енциклопедије
Ed NL icon.png
Овај чланак је део пројекта семинарских радова на Високој школи електротехнике и рачунарства струковних студија у Београду.
Датум уноса: март—мај 2016.
Википедијанци: Ова група студената ће уређивати у ГИП-у и молимо вас да не пребацујете овај чланак у друге именске просторе Википедије.
Позивамо вас да помогнете студентима при уређивању и допринесете да њихови уноси буду што квалитетнији.

Џаваскрипт или Јаваскрипт (енгл. JavaScript) је скриптни програмски језик који се првенствено користи за дефинисање функционалности веб страница на клијентској страни. Динамичан, слабо типизиран језик, са скромном подршком за објектно оријентисано програмирање, он уствари представља имплементацију стандарда Екмаскрипт.

Иако је првобитна идеја била да Јаваскрипт личи на Јаву[1], он не садржи ниједан кључни елемент Јаве осим оних које су оба наследили из C-а. Језик је најпознатији по програмирању клијентске функционалности веб страница, али се може користити и као скриптни језик за приступ објектима у другим апликацијама.

Језик се прво звао „Лајвскрипт“ (енгл. LiveScript), али је име промењено у Јаваскрипт, због маркетиншког договора између Нетскејпа и Сана. Кључни елементи дизајна Јаваскрипта су наслеђени из програмског језика Селф.

Историјат[уреди]

Следећа табела се заснива на информацијама из више извора.[2][3][4]

Верзија Датум Еквивалентно са Нетскејп
Навигатор
Мозила
Фајерфокс
Интернет
Експлорер
Опера Сафари Гугл
Хром
1.0 Март 1996 2.0 3.0
1.1 Август 1996 3.0
1.2 Јун 1997 4.0-4.05 3[5]
1.3 Октобар 1998 ЕКМА (енгл. ECMA)-262 1. + 2. издање 4.06-4.7x 4.0 5[6]
1.4 Нетскејп
Сервер
6
1.5 Новембар 2000 ЕЦМА-262 3. издање 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 Новембар 2005 1.5 + додаци низовима + генератори низова и стрингова + E4X 1.5
1.7 Октобар 2006 1.6 + пајтон генератори + итератори + дозволе 2.0 28.0.1500.95
1.8 Јун 2008 1.7 + генератори израза + затварачи израза 3.0 11.50
1.8.1 1.8 + подршка за Џејсон(енгл. JSON) + мањи додаци 3.5
1.8.2 Јун 22, 2009 1.8.1 + мањи додаци 3.6

Карактеристике[уреди]

Лого програмског језика Јаваскрипт

Структура програмског језика Јаваскрипт је веома слична структури програмског језика C (for петља, while петља, if исказ...). Један делимичан изузетак су типови променљивих. У Јаваскрипт-у свака променљива се иницијализује са кључном речи var. Као и C, Јаваскрипт прави разлику између исказа и израза. Још једна битна разлика у односу на C је и аутоматско уметање краја наредбе односно карактера тачка-зарез. Дакле, у Јаваскрипт-у није потребно експлицитно наглашавати крај наредбе са знаком тачка-зарез. Јаваскрипт је слабо типизиран језик. То значи да уколико имамо неку променљиву која је везана за број, та иста променљива касније може бити везана за стринг.[7]

Јаваскрипт је објектно заснован скриптни језик. Укључујемо га у интернет страницу да би је учинили динамичнијом. Јаваскрипт је скриптни језик јер се састоји од серије команди које се очитавају у интерпретеру а да се претходно не компајлира садржај. Односно не преводи се у машински (бинарни код 1 и 0) из кога никада нећемо сазнати оригинални језик, него се команде директно читају из кода. Због ове карактеристике, Јаваскрипт се извршава на страни корисника, тј. на рачунару на којем је покренут садржај са Јаваскрипт кодом. Сам по себи, HTML дозвољава посетиоцу да пошаље податке ка серверу на обраду. Нажалост, ако ти подаци нису валидни цео процес се мора поновити све док се не унесу валидни подаци. Ово је један од основних разлога настанка Јаваскрипт-а који проверава веродостојност података на клијентовом претраживачу.[8]

Синтакса[уреди]

Једноставнији примери[уреди]

Променљиве се у Јаваскрипт-у дефинишу са кључном речи var. [9]

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

Коментари се у Јаваскрипт-у пишу на следећи на следећи начин.

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

За испис текста на екрану, користи се објекат конзоле. У примеру је дато исписивање текста Здраво Свете.

console.log("Zdravo Svete.");

Искази if, else и 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...");
}

Једноставна рекурзивна функција која рачуна факторијел.

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

Пример анонимне функције

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

Напреднији пример[уреди]

Овај узорак кода приказује разне Јаваскрипт функције.

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());
});

Употреба у интернет страницама[уреди]

Најчешћа употреба Јаваскрипт-а је додавање динамичности HTML страницама на клијентској страни. Скрипте се укључују у HTML странице и врше интеракцију са објектним моделом докумената (енгл. Document Object Model). Неки од примера употребе Јаваскрипт-а су:

  • Учитавање одређеног дела странице или достављање података серверу преко АЈАКСА (engl. AJAX) без поновног освежавања целе странице (на пример друштвена мрежа вам омогућава ажурирање новог статуса без освежавања целе странице).
  • Анимирање елемената на страници, чинећи их видљивим и невидљивим, мења елементима величину, помера њихов садржај.
  • Убацивање интерактивног садржаја (на пример видео клипова, анимација, видео игрица, аудио садржаја...)
  • Валидација унетог садржаја унутар форми, како би били сигурни да су исправни подаци послати серверу.

Интернет претраживач је најчешће окружење за извршавање Јаваскрипт кода. Интернет претраживачи обично креирају хост објекте за представљање објектног модела докумената у Јаваскрипт-у. Поред интернет претраживача, Јаваскрипт код се може извршити и на серверу.[10]

Једноставна скрипта[уреди]

Испод је минималистички пример интернет странице која користи Јаваскрипт и објектни модел докумената.

<!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>

Компатибилност[уреди]

С обзиром да ЈаваСкрипт код може да се изврши у различитим окружењима, важан део тестирања кода је и провера да ли Јаваскрипт код ради на више различитих претраживача.

Интерфејс објектног модела докумената за манипулацију са интернет страницама није део Екмаскрипт стандарда односно самог Јаваскрипт-а, већ је дефинисан посебним стандардом. У пракси, имплементација интернет претраживача се разликује у стандардима, и самим тим не извршава сваки претраживач Јаваскрипт код исто.

Да би се ове разлике анулирале, Јаваскрипт програмери могу да покушају да напишу код који ће се у већини претраживача извршавати исто. Ако се не изврши, могуће је написати код који проверава присуство одређених вункција претраживача.[11] У неким случајевим, два претраживача могу извршити исту функцију али са различитим исходом. Тако да програмер може практично открити шта претраживач ради и сходно томе изменити своју скрипту како би је претраживач извршио на одговарајући начин.[12][13]

Осим тога, скрипте не могу да раде за одређене кориснике. На пример корисник може да:

  • Користи стари или редак интернет претраживач са непотпуном или необичном подршком за објектни модел докумената.
  • Користи ПДА (engl. personal digital assistant) или претраживач на мобилном телефону који не може да изврши Јаваскрипт код.
  • Да има онемогућено извршавање Јаваскрипт-а као меру предострожности.

Како би помогли овим корисницима, програмери могу да направе интернет странице које деградирају претраживаче да не користе Јаваскрипт. Конкретно, страна би требала остане употребљива без додатних елемената Јаваскрипт-а. Алтернативни приступ решавању овог проблема јесте да први аутор садржаја користи основне технологије које раде у свим претраживачима, а затим побољша садржај намењен корисницима који подржавају Јаваскрипт. Ово је познато као прогресивно побољшање.

Референце[уреди]

  1. Нетскејп, „Како учинити веб странице живим“ - Брендан Ајх, творац Јаваскрипта
  2. „JavaScript – JScript – ECMAScript version history”. Webmasterworld.com. Приступљено 30. 4. 2016. 
  3. Resig, John. „Versions of JavaScript”. Ejohn.org. Приступљено 30. 4. 2016. 
  4. „Version Information (JScript)”. Msdn.microsoft.com. Приступљено 30. 4. 2016. 
  5. „History of the Opera web browser”. www.opera.com. Приступљено 30. 4. 2016. 
  6. „What Version of JavaScript”. 
  7. Flanagan (2006). стр. 16.
  8. 8,0 8,1 „Uvod u Javaskript”. znanje.org. Приступљено 30. 4. 2016. 
  9. „var – JavaScript – MDN”. The Mozilla Developer Network. Приступљено 30. 4. 2016. 
  10. „JavaScript tracking – Piwik”. Piwik. Приступљено 30. 4. 2016. 
  11. Peter-Paul Koch, Object detection
  12. Peter-Paul Koch, Mission Impossible – mouse position
  13. Peter-Paul Koch, Browser detect

Спољашње везе[уреди]