Javascript2

=** Содржина: **=


 * Вовед**
 * Вашата прва JavaScript скрипта **
 * Овозможување/оневозможување на JavaScript во веб прелистувач **
 * Internet Explorer 6/7/8/9/10/11
 * Google Chrome (верзија 31)
 * Mozilla Firefox (верзија 26.0)
 * Opera (верзија 17.0)
 * Safari (верзија 5.1.7)
 * Проверка дали е овозможено извршување на JavaScript код на веб прелистувачот **
 * Пренасочување
 * Порака со известување дека за да правилна работа на сајтот мора да е овозможено извршување на JavaScript код на веб пребарувачот
 * Каде може да се пишува JavaScript кодот **
 * Вклучување на надворешна датотека со JavaScript код **
 * Оператори во JavaScript **
 * Аритметички оператори
 * Споредбени оператори
 * Логички оператори
 * Променливи во JavaScript **
 * Типови на променливи
 * Проверка на типот на променлива
 * Конверзија на типот на променливата
 * Конвенција за именување на променливи
 * Функции **
 * Локални променливи во JavaScript
 * Глобални променливи во JavaScript
 * Доделување на вредност на недекларирани променливите
 * Услови **
 * if наредба
 * if … else наредба
 * if … else if … else наредба
 * switch наредба
 * Циклуси **
 * for циклус
 * for/in циклус
 * while циклус
 * do/while циклус
 * Користење на break и continue во циклуси **
 * break
 * continue
 * Справување со грешки **
 * try/catch
 * throw

 **Вовед**

По дефиниција, JavaScript е скриптен јазик кој се извршува на клиентска страна. Ова значи дека веб пребарувачите се тие кои ја извршуваат скриптата. Спротивно од извршување на клиенска страна е извршување на серверска страна, кое се јавува кај програмските јазици како: PHP, Java, Python итн. Програмскиот код од овие јазици се извршува од страна на серверот на кој е хостиран веб сајтот.

JavaScript јазикот може да се користи како за позитивни, така и за негативни цели. Подолу се наведени најчестите работи за кои се користи JavaScript.
 * Часовници
 * Анимиции кои се движат заедно со движењето на курсорот
 * Менија на веб сајтови
 * Процорци со пораки
 * Валидација на HTML форма на клиенска страна

При пишување на JavaScript код, многу работи можат да тргнат наопаку, како на пример:
 * грешка од страна на програмерот
 * проблеми со компатибилноста на веб пребарувачот (најчесто со Internet Explorer)
 * разлики во оперативниот систем

Поради овие причини, кога се пишува JavaScript код, истиот треба да се тестира на што е можно повеќе оперативни системи и веб прелистувачи.

 **Вашата прва JavaScript скрипта**

Како прв и наједноставен пример, е да се направи Hello World пример. Во нашиот случај тоа ќе биде печатење на текстот „Hello World“. Кодот за овој пример е даден подолу: code  code Откако ќе го отвориме на веб предарувач треба да го видиме следното: code Hello World! code

Со script тагот, на веб предарувачот му се кажува дека на нашата веб страна ќе користиме скрипта. Со сетирање на типот на text/JavaScript му кажуваме дека кодот во скриптата ќе биде JavaScript. Исто така може да се забележи дека JavaScript кодот е ставен во ознаки за HTML коментар. Ова е направено со цел, ако веб пребарувачот нема подршка за извршување на JavaScript (или има но е оневозможена), кодот да не се прикаже на екран таков како што е. Ако кодот не е ставен во коментар, а веб пребарувачот нема подршка за JavaScript, тогаш на екран ќе го видиме следното. code document.write("Hello World!") code

Во погорниот код, од document објектот ја повикуваме write функцијата од document објектот. Оваа функција има за цел, влезниот параметар кој е од тип string да го запише во HTML документот. Влезниот параметар може да биде обичен текст, HTML текст или и двете. Во примерот погоре може да се забележи дека наредбата, во овој случај повикот на функцијата write, на крајот не завршува со точка-запирка. Во JavaScript не е задолжително да се пишува точка-запирка на крајот од наредбата, бидејќи JavaScript подразбира дека пишуваме една наредба во еден ред. Ако сакаме да имаме повеќе наредби во еден ред, тогаш мора да ги одделиме со точка-запирка.

Пример за две наредби во еден ред, одделени со точка-запирка е даден подолу: code document.write("Hello "); document.write("World!") code

Сепак, ставањето на точка-запирка после секоја наредба, иако има само една наредба во еден ред, е добра програмерска практика.

 =Овозможување/оневозможување на JavaScript во веб прелистувач= 
 * Internet Explorer 6/7/8/9/10/11**


 * кликнуваме на ** tools ** од главното мени на веб пребарувачот (IE 6/7/8)
 * кликнуваме на икончето за **tools** од главното мени на веб пребарувачот (IE 9/10/11)
 * одбираме **Internet Explorer ...**
 * кликнуваме на **Security** картичката на **Internet Options** pop-up прозорецот
 * кликнуваме на **Custom Level …** копчето за да пристапиме до опциите за безбедност
 * се движиме надолу се до **Scripting** секцијата
 * го одбираме **Enable** копчето за **Active scripting**
 * кликнуваме на **OK**
 * кликнуваме на **Yes** за да потврдиме

За повеќе детали кликнете на: Internet Explorer 6/7/8 За повеќе детали кликнете на: Internet Explorer 9/10/11


 * Google Chrome (верзија 31)**


 * во горниот десен агол, кликнуваме на икончето за копчето „ ** Customize and control Gogle Chrome ** “
 * од менито кликнуваме на **Settings**
 * со лизгачот одиме најдолу и клинуваме на линкот **Show advanced settings...**
 * во делот **Privacy** кликнуваме на **Content settings...**
 * во делот JavaScript има две опции: **Allow all site to run JavaScript (recommended)** – за да овозможиме извршување на JavaScript код и втората опција е **Do not allow any site to run JavaScript** со која на сите сајтови им забрануваме да извршуваат JavaScript код
 * кликнуваме **Done**

За повеќе детали кликнете на: Google Chrome 31


 * Mozilla Firefox (верзија 26.0)**


 * во address барот пишуваме ** about:config ** и притискаме ентер
 * кликнуваме на „**I'll be careful, I promise**“
 * во search барот пишуваме **javascript.enabled**
 * десен клик на резултатот именуван како **javascript.enabled** и кликнуваме на **Toggle**, со што ќе го оневозможиме извршувањето на JavaScript код на прелистувачот
 * за да го овозможиме повторно, треба да се повторат истите чекори

За повеќе детали кликнете на: Mozilla Firefox 26.0


 * Opera (верзија 17.0)**


 * кликнуваме на **Opera** копчето во горниот лев агол
 * одиме кај опцијата **Settings**
 * потоа кај опцијата **Quick Preferences**
 * го одозначуваме квадратчето кај опцијата **Enable JavaScript** за да го оневозможиме извршувањето на JavaScript код
 * ако сакаме да го овозможиме извршувањето на JavaScript код, треба да го означиме квадратчето кај истата опција

За повеќе детали кликнете на: Opera 17.0


 * Safari (верзија 5.1.7)**


 * во горниот десен агол килкнуваме на икончето за ** tools **
 * кликнуваме на **Preferences …**
 * ја одбираме картичката **Security**
 * ја одозначуваме опцијата **Enable JavaScript** за да го оневозможиме извршувањето на JavaScript код
 * ако сакаме да го овозможиме извршувањето на JavaScript код, треба да го означиме квадратчето кај истата опција

За повеќе детали кликнете на: Safari 5.1.7

 **Проверка дали е овозможено извршување на JavaScript код на веб прелистувачот**

Во денешно време скоро и да не може да се замисли веб сајт без користење на JavaScript. За да се справиме со веб пребарувачите кај кои е оневозможено извршувањето на JavaScript код, може да постапиме на еден од следните начини:  code <!doctype html>
 * **пренасочување** - да постојат две верзии на веб сајтот. Едната да користи JavaScript, а другата да не користи. Кога корисникот ќе пристапи на веб сајтот, иницијално тоа да биде до верзијата која не користи JavaScript. Во head тагот да има JavaScript код кој ќе го пренасочи корисникот на верзијата која користи JavaScript. Или подетално: иницијално корисникот пристапува до сајтот кој не користи JavaScript, и ако извршувањето на JavaScript код на веб пребарувачот на корисникот е оневозможено, JavaScript кодот кој треба да изврши пренасочување нема да се изврши, и корисникот ќе пристапи до верзијата од сајтот кој не користи JavaScript. А ако извршувањето на JavaScript код е озвозможено на веб пребарувачот корисникот ќе биде пренасочен на верзијата која користи JavaScript.

 My page  window.location = "http://www.example.com/JavaScript-enabled.html"

... code  code <!doctype html>
 * **порака со известување дека за да правилна работа на сајтот мора да е овозможено извршување на JavaScript код на веб пребарувачот** - на почетокот од сајтот да се додаде порака која ќе го извести корисникот дека за правилна работа на сајтот мора да има овозможено извршување на JavaScript код. И веднаш по вчитување на страната да се додаде JavaScript код кој ќе ја крие оваа порака. Што значи дека ако корисникот ја има овозможено опцијата за извршување на JavaScript код, нема да ја види пораката за известување.



My page

За правилно работа на веб сајтот мора да ја имате овозможено опцијата за извршување на JavaScript код  document.getElementById("message").style.display = 'none'; ...

code

 =Каде може да се пишува JavaScript кодот=

Има три начини за тоа каде да стои JavaScript тагот:
 * внатре во head тагот
 * внатре во body тагот (најчесто пред затварење на body тагот)
 * во надворешна .js датотека која се вклучува во html датотеката

JavaScript кодот пожелно е да стои во надворешна датотека пред се поради подобра организација на структурата на кодот за веб сајтот, повторна употреба на ист код, полесна читливост на html кодот од страните и полесно одржување на веб сајтот. Надворешната датотека може да се вклучи било каде во html кодот. Најчесто тоа се прави или на почетокот или на крајот. Повеќе се употребува вклучување на крајот од html кодот бидејќи со тоа побрзо ќе се рендерира html кодот на веб пребарувачот и се намалува време на чекање за корисникот да може да добие визуелен приказ на екранот. Но во одредени ситуации, како на пример со претходно споменатиот код со кој се правеше проверка дали извршувањето на JavaScript код е овозможено, и правеше пренасочување на друга страна, пожелно е кодот да стои на почетокот од страната.

 = Вклучување на надворешна датотека со JavaScript код =

Надворешната датотека мора во себе да содржи само JavaScript код, мора да има екстензија .js и не треба да го има script тагот. За да се вклучи во html кодот се користи тагот script. На овој таг треба да му ги зададеме следните атрибути: src и type. Првиот атрибут како вредност треба да ја има патеката до надворешната JavaScript датотека вклучувајќи го и името и екстензијата на самата датотека. Ако html и JavaScript датотеките се наоѓаат на иста локација, во тој случај src тагот за вредност ќе го има само името и екстензијата на надворешната JavaScript датотека. Атрибутот type го специфицира MIME типот на скриптата. За JavaScript код MIME тип е: text/javascript. Подолу е даден пример каде во едноставна html страна (index.html) на крајот од body тагот е вклучена надворешна JavaScript датотека (hello.js). Во html кодот има едно копче на кое е наместено при клик на него да се повика фукцијата popup. Оваа функција се наоѓа во надворешната JavaScript датотека.

// index.html // code <!doctype html>

 My page

  code

// hello.js // code function popup { alert("Hello World"); } code

 =Оператори во JavaScript=

Операторите во JavaScript се многу слични како и операторите кај другите програмски јазици. Оператор, по дефиниција, претставува симбол кој се користи за извршување на одредена операција. Најчесто тоа се артиметички операции (собирање, одземање итн.), но не секогаш. 
 * ** Аритметички оператори **

Аритметичките оператори се користат за извршување на основните математички операции: собирање, одземање, множење, делење и модул.


 * = **Оператор** ||= **Операција** ||= **Пример** ||= **Резултат** ||
 * = + ||= собирање ||= 2 + 4 ||= 6 ||
 * = - ||= одземање ||= 6 – 2 ||= 4 ||
 * = * ||= множење ||= 5 * 3 ||= 15 ||
 * = / ||= делење ||= 16 / 3 ||= 5.333333333333 ||
 * = % ||= модул ||= 43 % 10 ||= 3 ||

Како специфичен оператор е операторот за модул. Кога го користиме овој оператор како резултат се добива одтатокот од делењето. Во случајот 43 % 10 = 3, значи дека 43 % 1 = (4 * 10) + 3. 
 * ** Споредбени оператори **

Споредбените оператори се користат за проверка на две вредности и како резултат секогаш се добива true или flase. Овие наредби најчесто се користат во наредбите со услов. 
 * = **Оператор** ||= **Операција** ||= **Пример** ||= **Резултат** ||
 * =  ||= исто со (се споредува само вредноста, а не и типот на променливата) ||= 3 5 ||= false ||
 * ^  ||^   ||= 5 == 5 ||= true ||
 * ^  ||^   ||= 5 == "5" ||= true ||
 * =  ||= исто со (се споредува и вредноста и типот на променливата) ||= 3 5 ||= flase ||
 * ^  ||^   ||= 5 === 5 ||= true ||
 * ^  ||^   ||= 5 === "5" ||= false ||
 * = != ||= не е исто со (се споредува само вредноста, а не и типот на променливата) ||= 3 != 5 ||= true ||
 * ^  ||^   ||= 5 != 5 ||= false ||
 * ^  ||^   ||= 5 != "5" ||= false ||
 * = !== ||= не е исто со (се споредува и вредноста и типот на променливата) ||= 3 !== 5 ||= true ||
 * ^  ||^   ||= 5 !== 5 ||= false ||
 * ^  ||^   ||= 5 !== "5" ||= true ||
 * = < ||= помало од (типот на променливата не е битен) ||= 3 < 5 ||= true ||
 * ^  ||^   ||= 3 < "5" ||= true ||
 * = > ||= поголемо од (типот на променливата не е битен) ||= 3 > 5 ||= false ||
 * ^  ||^   ||= 3 < "5" ||= false ||
 * = <= ||= помало или исто со (типот на променливата не е битен) ||= 3 <= 5 ||= true ||
 * ^  ||^   ||= 5 <= 5 ||= true ||
 * ^  ||^   ||= 3 <= "5" ||= true ||
 * ^  ||^   ||= 5 <= "5" ||= true ||
 * = >= ||= поголемо или исто со (типот на променливата не е битен) ||= 7 >= 5 ||= true ||
 * ^  ||^   ||= 7 >= 7 ||= true ||
 * ^  ||^   ||= 7 >= "5" ||= true ||
 * ^  ||^   ||= 7 >= "7" ||= true ||
 * ** Логички оператори **

Има три логички оператори и тоа: логичко И (&&) кое дава вредност true ако и само ако и двете страни имаат вредност true, логичко ИЛИ (||) кое дава вредност true, ако барем едната од страните има вредност true и негација (!) кое ја негира вредноста т.е. од true ја прави false и обратно од false ја прави true.


 * = **Оператор** ||= **Операција** ||= **Пример** ||= **Резултат** ||
 * = && ||= логичко И ||= true && true ||= true ||
 * ^  ||^   ||= true && false ||= false ||
 * ^  ||^   ||= false && true ||= false ||
 * ^  ||^   ||= false && false ||= false ||
 * = | | ||= логичко ИЛИ ||= true && true ||= true ||
 * ^  ||^   ||= true && false ||= true ||
 * ^  ||^   ||= false && true ||= true ||
 * ^  ||^   ||= false && false ||= false ||
 * = ! ||= негација ||= !true ||= false ||
 * ^  ||^   ||= !false ||= true ||

 =Променливи во JavaScript=

Целта на променливите е да се зачува некоја информација која ќе може покасно да се искористи. Променлива е симболично име која го претставува некој податок, коj е зададен од страна на програмерот или се добива со некоја пресметка. За име на променлива треба да се избере збор/зборови кои го опишуваат податокот кој што ќе се чува во таа променлива. Кога една променлива се користи за прв пат, не мора да се користи резервираниот зборот var, но сепак е добра програмерска практика да се употребува за да може да се види каде променливата е употребена за прв пат во програмата. Освен тоа резервираниот збор var влијае и врз опсегот во кој „живее“ променливата т.е. каде се може да се пристапи до таа променлива. Ако во една функција се направи променлива со име broj1 и притоа се користи резервираниот збор var (пр. //var broj1;//) тогаш оваа променлива ќе може да се пристапи (да се употребува само во таа функација), односно нејзиниот опсег во кој „живее“ е функцијата во која е декларирана. Ако се направи уште една променлива со име broj2 и притоа не се користи резервираниот збор var (пр. //broj2;//) во овој случај опсегот на оваа прменлива ќе оди во погорните опсеци се додека не најде променлива која е со исто име (во случајов //broj2//) и пред која го има резервираниот збор var, или ако нема таква променлва тогаш нејзиниот опсег ќе биде глобален. //За да се избегнат проблемите со опсегот на променливите пожелно е да се користи резервираниот збор var//. Во JavaScript при декларирање на променлива ако не и се додели вредност на таа променлива т.е. ако таа променлива не се иницијализира, како default вредност ќе има //undefined//.

Пример ако направиме променлива broj и без да и доделиме вредност ја испечатиме … code var broj; document.write(broj); code ... ќе го добиеме следниот резултат: code undefined code

Ако при декларирање на променливата направиме и иницијалицазија, во тој случај ќе ја видиме вредноста на променливата.

Пример ако направиме променлива broj и ја иницијализираме на 5, тогаш … code var broj = 5; document.write(broj); code … тогаш ќе ја видиме вредноста на променливата. code 5 code 
 * ** Типови на променливи **

При декларирање на променливи во JavaScript може да се забележи дека никаде не се наведува типот на променливата, односно од кој тип ќе биде податокот кој ќе се чува во таа променлива. Тоа е така бидејќи самиот JavaScript, во зависност од вредноста што ќе и биде зададена на променливата ќе си го одреди типот на податокот.


 * = **Тип на променлива** ||= **Пример** ||= **Опис** ||
 * = String ||= var gard = "Bitola"; ||= Секој податок кој е низа од карактери, а може и еден карактер, заобиколен во единечни или двојни наводници. ||
 * ^  ||= var gard = "B"; ||^   ||
 * ^  ||= var grad = 'Bitola'; ||^   ||
 * ^  ||= var grad = 'B'; ||^   ||
 * = Number ||= var broj = 5; ||= Секој податоок кој е цел или децимален број (било позитивен или негативен), или екпоненцијален број ||
 * ^  ||= var broj = 5.7; ||^   ||
 * ^  ||= var broj = -5; ||^   ||
 * ^  ||= var broj = 123e5; ||^   ||
 * ^  ||= var broj = 123e-5; ||^   ||
 * = Boolean ||= var tmp = true; ||= Секој податок кој има вредност true или false; ||
 * ^  ||= var tmp = false; ||^   ||
 * = Array ||< var data = new Array;

data[0] = "BMW"; data[1] = false; data[2] = "Audi"; data[3] = 7; data[4] = "Ford"; ||= Секој податок кој во себе содржи повеќе вредности кои не мора да бидат од ист тип на податок. || brand : "BMW", model : "M5", HP : 507, automatic : true, fuelTankGallons : 18.5 }; ||= Податок кој започнува со {, завршува со } и кој во себе содржи својства (properties) кои се одделени со, (запирка) и вредноста од својството е одделена со : (две точки). ||
 * ^  ||< var data = new Array ("BMW", false, "Audi", 7, "Ford"); ||^   ||
 * = Object ||< var car = {
 * = Undefined ||= var myVar; ||= undefined е default вредност на секоја променлива на која не и е доделена вредност. ||
 * = Null ||= var car = null; ||= null е вредност со која се празнат променливите. ||
 * ** Проверка на типот на променлива **

Проверка на типот на променлива може да се направи со користење на typeof.

Примери за користење typeof: code var carBrand = "BMW"; var carGroup = 'M'; var carGroupNo = 5; var automatic = true; var CarEquipment = ["ABS", "ESP", "Air bags"];

document.write(typeof carBrand); document.write(typeof carGroup); document.write(typeof carGroupNo); document.write(typeof automatic);

code Резултати од погоре наведените проверки: code string string number boolean

code 
 * ** Конверзија на типот на променливата **

Во текот на програмата JavaScript автоматски го менува типот на податокот на променливата во однос на вредноста што ја задаваме. Подолу е даден конкретен пример: code var data = "BMW"; document.writeln(typeof data); data = 5; document.writeln(typeof data); data = 'M'; document.writeln(typeof data); data = true; document.writeln(typeof data);

code Резултати од погорниот пример:

code string number string boolean code

Конверзија од еден тип на податок во друг може да се прави со користење на глобалните функции за конверзија на типови на податоци: parseInt и parseFloat.

Подолу е даден пример за користење на parseInt глобалната функција:

code var number1 = parseInt("10"); var number2 = parseInt("10.00"); var number3 = parseInt("10.33"); var number4 = parseInt("34 45 66"); var number5 = parseInt(" 60 "); var number6 = parseInt("40 years"); var number7 = parseInt("10",10); var number8 = parseInt("010"); var number9 = parseInt("10",8); var number10 = parseInt("0x10"); var number11 = parseInt("10",16);

document.writeln(number1); document.writeln(number2); document.writeln(number3); document.writeln(number4); document.writeln(number5); document.writeln(number6); document.writeln(number7); document.writeln(number8); document.writeln(number9); document.writeln(number10); document.writeln(number11);

code Резултати од погорниот пример: code 10 10 10 34 60 40 10 10 8 16 16 code

Подолу е даден пример за користење на parseFloat глобалната функција: code var number1 = parseFloat("10"); var number2 = parseFloat("10.00"); var number3 = parseFloat("10.33"); var number4 = parseFloat("34.7 45 66"); var number5 = parseFloat(" 60 "); var number6 = parseFloat("40 years");

document.writeln(number1); document.writeln(number2); document.writeln(number3); document.writeln(number4); document.writeln(number5); document.writeln(number6);

code Резултати од погорниот пример: code 10 10 10.33 34.7 60 40 code 
 * ** Конвенција за именување на променливи **

При избирање на име на променлива треба да се осигураме дека тоа име не е некој од резервираните зборови кои ги користи JavaScript. Добра програмерска практика е името на променливата да го опишува податокот што ќе се чува во неа. Пример ако треба да се направи променлива во која како податок ќе се чува возраста на некој корисник, променливата би можела да биде: var age = 24; Ако името на променливата треба да има повеќе зборови тогаш пожелно е да се користи еден од двата методи за именување на променливи со повеќе зборови, со цел да се подобри читливоста на кодот.

**а)** со користење на долна црта. На пример за променлива во која како податок ќе се чува максималниот број на литри на гориво на резерварот на автомобилот би можело да биде: var car_fuel_tank_capacity = 70;

**б)** camel case syntax. Секој нареден збор, освен првиот, да почнува со голема буква. На пример за променлива во која како податок ќе се чува максималниот број на литри на гориво на резерварот на автомобилот би можело да биде: var carFuelTankCapacity = 70;

Исто така добра пракса е да не се мешаат овие два начини на именување во една програма т.е. начинот на именување да биде козистентен низ целата програма. Името на променливата мора да почнува или во буква или со долна црта т.е. како почетен карактер на името не може да се користат бројки или специјални знаци.


 * **Резервирани зборови во JavaScript** ||
 * abstract || else || instanceof || switch ||
 * boolean || enum || int || synchronized ||
 * break || export || interface || this ||
 * byte || extends || long || throw ||
 * case || false || native || throws ||
 * catch || final || new || transient ||
 * char || finally || null || true ||
 * class || float || package || try ||
 * const || for || private || typeof ||
 * continue || function || protected || var ||
 * debugger || goto || public || void ||
 * default || if || return || volatile ||
 * delete || implements || short || while ||
 * do || import || static || with ||
 * double || in || super ||  ||

 =Функции=

Функција претстаува парче код кој ќе се изврши тогаш кога ќе биде повикан. Декларацијата на функцијата се пишува така што прво се пишува резервираниот збор function, потоа името на функцијата кое за задава од страна на програмерот и на крај следат отврена и затворена мала заграда. Во овие загради може да се пишуваат променливи кои се викаат влезни аргументи (или уште може да се викаат - параметри) на функцијата. При пишување на аргументите се пишува само името на аргументот без резервираниот звор var. Доколу функцијата има повеќе од еден аргумент тие меѓусебе се одделуваат со запирка. Една функција може и да нема влезни аргументи. За формирање на имиња на функции важат истите правила како и за формирање на имиња на променливи. Дефиницијата т.е. телото на функцијата е всушност она што таа функција го прави. Дефиницијата на функцијата започнува со { (отворена голема заграда) и завршува со } (затворена голема заграда).

Пример за функција која прима два аргументи и го пресметува нивниот збир. code function prezmetajZbir (broj1, broj2) { var zbir = broj1 + broj2; }

code

Пример за функција која не прима влезни параметри. code function prezmetajZbir { var broj1 = 5; var broj2 = 7; var zbir = broj1 + broj2; }

code

Функциите може да враќаат вредност, но и не мора. Ако функцијата враќа вредност тогаш мора да го има резервираниот збор return и после него да следи вредноста што треба да се врати. Сите наредби кои ќе се напишат после наредбата со return резервираниот код, нема да се извршат. И тој код се вика мртов код.

Пример за функција која не враќа вредност: code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; var poraka = "Zbirot e: " + zbir;

alert(poraka); }

code

Пример за функција која враќа вредност: code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2;

return zbir; } code

Пример за функција со мртов код: code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; var output = "Zbirot e: " + zbir; return zbir; // slednite dva reda se mrtov kod

alert(zbir); var razlika = broj1 - broj2; }

code

За да се изврши кодот што се наоѓа во телото на функцијата, потребно е таа функцијада се повика. Повик на функција се прави така што се пишува само името на функцијата без резервираниот збор function, потоа се пишуваат отворена и затворена мала заграда, во кои треба да се внесат параметри, доколку функцијата треба да прими. При внесувањето на параметрите, самите парамтери може да бидат некои променливи или пак фиксни вредност. Доколку при повик на функцијата и се проследат повеќе параметри отколку што таа навистина прима, тогаш параметрите кои се вишок ќе бидат игнорирани. А ако при повик на функцијата и се проследат помалку параметри, во тој случај останатите параметри ќе имаат вредност undefined. Доколу се повикува функција која враќа вредност, најчесто вредноста која се враќа се зачувува во променлива за да се користи за понатамошни пресметки.

Пример за повик на функција која не прима влезни параметри и не враќа вредност. code function prezmetajZbir { var zbir = 5 + 7; alert(zbir); }

prezmetajZbir;

code

Пример за повик на функција која не враќа вредност, прима влезни параметри и притоа параметрите се променливи. code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; alert(zbir); }

var br1 = 5; var br2 = 7;

prezmetajZbir(br1, br2);

code

Пример за повик на функција која не враќа вредност, прима влезни параметри и притоа параметрите се фиксни вредности. code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; alert(zbir); }

prezmetajZbir(5, 7);

code

Пример за повик на функција која враќа вредност, прима влезни параметри и притоа параметрите се промелниви. Вредноста што се враќа се чува во посебна променлива. code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; return zbir; }

var br1 = 5; var br2 = 7;

var rezultat = prezmetajZbir(br1, br2);

alert(rezultat);

code

Пример за повик на функција која не враќа вредност, прима влезни параметри и притоа параметрите се фиксни вредности. При повик на оваа функција и се проследуваат повеќе параметри одколку што е потребно. code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; alert(zbir); }

prezmetajZbir(5, 7, 9);

code

Пример за повик на функција која не враќа вредност, прима влезни параметри и притоа параметрите се фиксни вредности. При повик на оваа функција и се проследуваат помалку параметри одколку што е потребно. code function prezmetajZbir(broj1, broj2) { var zbir = broj1 + broj2; // broj2 ke ima vrednost undefined // rezultatot od sobiranjeto ke bide NaN bidejki operacijata ne moze da se izvrsi alert(zbir); }

prezmetajZbir(5);

code 
 * ** Локални променливи во JavaScript **

Променливи кои се декларирани, со користење на резервираниот збор var, внатре во некоја JavaScript функција стануваат локлани променливи и истите може да се пристапат само во таа функција. Во друга функција може да имаме променлива со исто име како во претходната функција и тоа воопшто нема да претставува никаков проблем, бидејќи како што е претходно споменато локалните променливи „живеат“ само во фнкцијата во која се декларирани. Локалните променливи се бришат веднаш одкако функцијата ќе се изврши.

Пример за локални променливи: code function zgolemi { var br = 10; br = br + 5; alert("zgolemen e: " + br); }

function namali(broj) { var br = 10; br = br - 5; alert("namalen e: " + br); }

zgolemi; namali;

code 
 * **Глобални променливи во JavaScript**

Променливите кои се декларирани надвор од функција се глобални променливи. Глобалните променливи може да бидат пристапени од сите скрипти и функции на веб страната. Животниот век на глобалните променливи започнува со нивната декларација, а завршува кога ќе се затвори веб страната.

code var br = 10;

function zgolemi { br = br + 5; alert("zgolemen e: " + br); }

function namali(broj) { br = br - 5; alert("namalen e: " + br); }

zgolemi; namali;

code 
 * ** Доделување на вредност на недекларирани променливите **

Ако на променлива која се уште не е декларирана и се додели вредност, во тој случај таа променлива автоматски ќе се декларира како глобална променлива.

Пример:

code broj = 10; code

Во погорниот пример автоматски ќе се декларира глобална променлива со име broj и вредност 10.

 =Услови=

Наредбите со услови се користат за да се извршат различни акции во зависност од дадениот услов. Во JavaScript ги има следните условни наредби:

**if** наредба – оваа наредба се користи за да се изврши одреден код само ако даден успов е вистиниот т.е. има вредност true **if … else** наредба – се користи за извршување на даден код ако одреден услов има вредност true, или извршување на друг код ако истиот услов има вредност false. **if … else if … else** наредба – се користи за да се изврши само еден блок со код од повеќе блокови со код. **switch** наредба - се користи за да се изврши само еден блок со код од повеќе блокови со код. 
 * ** if наредба **

Оваа наредба се користи за да се изврши некој блок со код, само ако одреден услов е точен т.е. има вредност true.

Синтакса: code if (condition) { code to be executed if condition is true }

code

Пример: code var godini = 20;

if (godini >= 18) { alert("Korisnikot e polnoleten"); }

code 
 * ** if … else наредба **

Оваа наредба се користи за извршување на даден код ако одреден услов има вредност true, или извршување на друг код ако истиот услов има вредност false.

Шема: code if (condition) { code to be executed if condition is true } else { code to be executed if condition is not true }

code

Пример: code var godini = 20;

if (godini >= 18) { alert("Korisnikot e polnoleten"); } else { alert("Korisnikot e maloleten"); }

code 
 * ** if … else if … else наредба **

Оваа наредба се користи за да се изврши само еден блок со код од повеќе блокови со код.

Синтакса: code if (condition1) { code to be executed if condition1 is true } else if (condition2) { code to be executed if condition2 is true } else { code to be executed if neither condition1 nor condition2 is true }

code

Пример: code var broj = 5;

if (broj < 0) { document.writeln("brojot e pomal od nula"); } else if (broj > 0) { document.writeln("brojot e pogolem od nula"); } else { document.writeln("brojot e nula"); }

code 
 * ** switch наредба **

Оваа наредба се користи за да се изврши само еден блок со код од повеќе блокови со код. Оваа наредба ја обавува истата работа како и наредбата од потточка 10.3 но има различна синтакса. Најпрво се креира една променлива (во примерот подолу тоа е променливата godisnoVremeBroj) и во неа се задава одредена вредност. Во оваа променлива како вредност може да се чува број, еден карактер или стринг, а не може објект или низа. Истата таа променлива ја задаваме како параметар во switch наредбата. case знaчи дека кога кога вредноста на променливата која е зададена во switch наредбата е иста со вредноста после case ќе се изврши кодот во тој case се до првата break наредба и сите case што следуваат нема воопшто да се проверат. На пример ако имаме case од 1 до 10, а вредноста на променливата во switch наредбата има вредност 5, најпрво таа вредност ќе се спореди со вредноста во првиот case, бидејќи не се софпаѓаат вредностите, наредна споредба е со вториот case и се така до петтиот. Бидејќи во петтиот case вредностите се софпаѓаат ќе се извршат сите наредби што се во тој case и повеќе нема да се прави споредба на вредноста од променливата од switch наредбата со case 6, 7, 8, 9 и 10. Ако во switch наредбата имаме вредност која не е во опсегот од 1 до 10, во тој случај ќе се изврши само кодот кој се наоѓа веднаш под default резервираниот збор. Кај крајот од наредбите во default може но не мора да стои резервираниот збор break;

Синтакса: code var n = 1;

switch(n) { case 1: execute code block 1 break; case 2: execute code block 2 break; default: code to be executed if n is different from case 1 and 2 } code

Пример: code var godisnoVremeBroj = 3;

switch(godisnoVremeBroj) { case 1: document.writeln("Prolet"); break; case 2: document.writeln("Leto"); break; case 3: document.writeln("Esen"); break; case 4: document.writeln("Zima"); break; default: document.writeln("Pogresen broj na godisno vreme"); break; }

code

 =Циклуси=

Циклус претставува повторување на некои наредби се додека некој услов е исполнет. Во JavaScript има повеќе типови на циклуси и тоа: 
 * ** for циклус **

синтаксата за овој тип на циклус е следната: прво се пишува резервираниот збор for, потоа следуваат отворена и затворена мала заграда и потоа има отворена и затворена голема заграда. Во малите загради има три наредби. Првата наредба е за иницијалицирање на променлива пред започнување на циклусот. Оваа наредба се извршува само еднаш. Втората наредба претставува услов со кој се дефинира до кога треба циклусот да работи. Кога овој услов ќе врати false циклусот претставува со работа. И третата наредба е промена на вредностите во условот од втората наредба. Зошто ако не се направи промена на вредностите во условот ќе се добие бесконечен циклус. Внатре помеѓу отворената и затворената голема заграда се пишуваат наредбите што треба да се извршат за едно вртење на циклусот.

Синтакса: code for (statement 1; statement 2; statement 3) { the code block to be executed }

code

Пример кој ги печати броевите од 1 до 10: code for (var i = 1; i <= 10; i++) { document.writeln(i + "; "); }

code

Пример кој ги печати сите непарни броеви од 1 до 10: code for (var i = 1; i <= 10; i = i+2) { document.writeln(i + "; "); } code 
 * **for/in циклус**

for/in циклусот се користи за итерирање низ својствата на еден објект. Синтаксата за овој тип на циклус е следна: се пишува резервираниот збор for, потоа следат отворена и затворена мала заграда и после нив отворена и затворена голема заграда. Во малите загради прво се пишува некоја променлива со име по наш избор (подолу во примерот променлива со име i), потоа следи резервираниот збор in и после него се пишува името на објектот низ кој сакаме да итерираме. Помеѓу отворената и затворената голема заграда се пишува она што сакаме да го работиме со својствата од објектот.

Синтакса: code for (x in objectName) { the code block to be executed } code

Пример за итерирање низ објект со име covek, во кој се чуваат својствата: име, презиме и години. code var covek = { ime : "John", prezime : "Doe", godini : 25 };

for (i in covek) { document.writeln(covek[i] + "; "); } code 
 * ** while циклус **

Овој циклус се користи за извршување на некои наредби кои треба да се повторуваат се додека даден услов е точен. Синтаксата на овој тип на циклус е следна: се пишува резервираниот збор while, потоа следат отворена и затворена мала заграда и после нив отворена и затворена голема заграда. Во малите загради се пишува услов кој треба да биде true или false. Циклусот ќе се повторува се додека условот има вредност true. Ако уште при првиот пат условот има вредност false циклусот нема да се изврши ниту еднаш. Помеѓу отворената и затворената голема заграда се пишуваат наредби кои сакаме да се извршат со секое вртење на циклусот. Треба да се внимава внатре во овие заграда да се напиши наредба која ќе влијае на вредноста на условот, во спротивно може да се добие кој ќе се извршува бесконечно.

Синтакса: code while (condition) { code block to be executed } code

Пример со кој се печатат сите броеви од 1 до 10: code var brojac = 1;

while (brojac <= 10) { document.writeln(brojac + ";"); brojac++; } code 
 * ** do/while циклус **

Овој циклус се користи за извршување на некои наредби кои треба да се повторуваат се додека даден услов е точен. Синтаксата на овој тип на циклус е следна: се пишува резервираниот збор do, потоа следат отворена и затворена голема заграда, потоа се пишува резервираниот збор while и после него следуваат отворена и затворена голема заграда. Помеѓу отворената и затворената голема заграда се пишуваат наредби кои сакаме да се извршат со секое вртење на циклусот. Треба да се внимава внатре во овие заграда да се напиши наредба која ќе влијае на вредноста на условот, во спротивно може да се добие циклус кој ќе се извршува бесконечно. Во малите загради се пишува услов кој треба да биде true или false. Циклусот ќе се повторува се додека условот има вредност true. Карактеристично за овој тип на циклус е тоа што мора да се изврши барем еднаш дури и во случај кога уште на почетокот условот има вредност false.

Синтакса: code do { code block to be executed } while (condition); code

Пример кој ги печати сите броеви од 1 до 10: code var brojac = 1;

do { document.writeln(brojac + "; "); brojac++; } while (brojac <= 10); code

 = Користење на break и continue во циклуси = 
 * ** break **

Наредбата ** break ** се користи за прекинување на циклусот, во зависност на даден услов, пред да тој да ги заврши сите вртења. Пример ако имаме една низа со броеви и треба да се провери дали во таа низа има број што е делив со 7. Ако има да се испечати кој е тој број, ако нема да се испечати порака дека во низата нема број кој е делив со 7.

Пример: code var broevi = [1, 3, 5, 10, 70, 88, 144, 256, 2014]; var broj;

for (var i = 0; i < broevi.length; i++) { if(broevi[i] % 7 == 0) { broj = broevi[i]; break; } }

if (typeof broj === 'undefined') { document.writeln("Nema broj koj e deliv so 7"); } else { document.writeln("Brojot " + broj + " e deliv so 7"); }

code 
 * ** continue **

Наредбата **continue** се користи за да се пресконки извршувањето на наредбите само за едно вртење на циклусот. Пример ако имаме една низа со броеви и треба да се намали вредноста на сите броеви за 1, освен броевите кои се деливи со 7. Откако ќе се намали вредноста на броевите да се испечати новата вредност. code var broevi = [1, 3, 5, 10, 70, 88, 144, 256, 2014]; var broj;

for (var i = 0; i < broevi.length; i++) { if(broevi[i] % 7 == 0) { continue; } else { document.writeln((broevi[i] - 1) + "; "); } }

code  =Справување со грешки=

За справување со грешки во JavaScript се користат наредбите try/catch или throw наредбата. Грешки во JavaScript кодот можат да се случат од следните причини:

**а)** синтаксичнки грешки, најчесто при пишување на кодот од страна на програмерот **б)** погрешно напишани или непостоечки карактеристики во јазикот (кои може да се јават како последица на различноста на веб пребарувачите) **в)** грешки кои се појавуваат како последица на погрешен input од корисникот или серверот. **г)** и уште многу други непредвидливи работи

Кога ќе се појави грешка, кога нешто ќе тргне наопаку, JavaScript engine-от – нормално ќе престани со работа и ќе генерира порака со грешката. Технички израз за ова е: JavaScript ќе фрли (throw) грешка. 
 * ** try/catch **

try наредбата овозможува да се дефинира блок во кој ќе се пишува код и истиот код ќе биде тестиран за грешки додека се извршува. Односно во овој блок се пишува кодот за кој очекуваме дека ќе фрли грешка. catch наредбата овозможува да се дефинира блок во кој ќе се пишува код кој ќе се изврши само ако кодот кој е во try делот фрли грешка. Во JavaScript try и catch наредбите се користат заедно.

Синтакса: code try { // Run some code here } catch(err) { // Handle errors here }

code

Пример во кој има грешка при пиувањето. Наместо наредбата alert пишано е adddlert. code var txt = "";

try { adddlert("Welcome guest!"); } catch(err) { txt = "There was an error on this page.\n\n"; txt += "Error description: " + err.message + "\n\n"; txt += "Click OK to continue.\n\n";

alert(txt); }

code 
 * ** throw **

throw наредбата дозволува да се креираат сопствени грешки. Точниот технички термин е create или throw an exception. throw наредбата може да се користи заедно со try и catch наредбите со цел да се добие контрола на текот на програмата и да се генерираат сопствени пораки за грешките.

Синтакса: code throw exception code каде exception може да биде JavaScript String, Number, Boolean или Object.

Пример каде корисникот треба да внеси вредност од 5 до 10, а ако внеси што било друго ќе се фрли грешка и ќе се појави соодветна порака за грешката. code <!DOCTYPE html>  Testing JavaScript code  function myFunction { var y=document.getElementById("mess"); y.innerHTML="";

try { var x=document.getElementById("demo").value; if(x=="")   throw "empty"; if(isNaN(x)) throw "not a number"; if(x>10)    throw "too high"; if(x<5)     throw "too low"; } catch(err) { y.innerHTML="Error: " + err + "."; }             }

My First JavaScript Please input a number between 5 and 10:  Test Input

code