JavaScript

С Википедије, слободне енциклопедије
Јаваскрипт
Снимак екрана Јаваскрипт изворног кода
Оригинални називенгл. JavaScript
Изговара сеЏаваскрипт или Јаваскрипт
Моделскриптни, објектно-оријентисани (прототипни), императивни, функционални и вођен догађајима
Појавио се4. децембар 1995. год.; пре 28 година (1995-12-04)[1]
Аутор(и)Брендан Ајк
Дизајнер(и)Нетскејп, Мозила Фондација, Ecma International
Актуелна верзијаECMAScript 2016[2]
Датум актуелне верзије17. јун 2016. год.; пре 7 година (2016-06-17)
Систем типовадинамички
ИмплементацијеV8, ЈаваскриптКор, SpiderMonkey, Chakra
УтицајиЛуа, Scheme, Перл, Селф, Јава, Се, Пајтон, AWK, HyperTalk
Утицао наActionScript, AtScript, CoffeeScript, Дарт, JScript .NET, LiveScript, Objective-J, Opa, Перл 6, QML, TypeScript,
Веб-сајтhttps://developer.mozilla.org/en-US/docs/Web/JavaScript

Јаваскрипт или Џаваскрипт (енгл. JavaScript) је динамичан, слабо типизиран и интерпретиран програмски језик високог нивоа. Стандардизован је по ЕКМАСкрипт спецификацији језика. Поред HTML-а и CSS-а, Јаваскрипт је једна од три водеће технологије за дефинисање садржаја на Вебу; већина веб-сајтова користи Јаваскрипт а сви модерни веб-читачи га подржавају без потребе за инсталирањем додатака. Комбинован са HTML језиком и CSS-om Јаваскрипт чини DHTML (Dynamic HTML).[3] Јаваскрипт је језик заснован на прототиповима са функцијама првог реда, што га чини језиком вишеструке парадигме који подржава објектно-оријентисани,[4] императивни и функционални начин програмирања. Садржи АПИ за рад са текстом, низовима, датумима и регуларним изразима, али не и улазно/излазне функционалности, као што су повезивање, складиштење података или графичке функционалности, за шта се ослања на окружење у коме се извршава.

Иако се на први поглед може рећи да Јаваскрипт има одређене сличности са програмским језиком Јава, као што су назив, синтакса и стандардне библиотеке, они су два потпуно различита програмска језика која се значајно разликују у свом дизајну. На програмски језик Јаваскрипт највише су утицали језици као што су Селф и Scheme.[5] Јаваскрипт се поред Веба користи и у другим окружењима, као што су PDF документи, Веб-читачи за специфичне веб-сајтове (енгл. site-specific browsers) и десктоп виџети (енгл. widget). Нове и знатно брже Јаваскрипт виртуелне машине и платформе засноване на њима, популаризовале су Јаваскрипт за израду веб апликација на серверској страни. На клијентској страни, програмери најчешће имплементирају Јаваскрипт као интерпетирани језик, али све више новијих веб-читача обавља just-in-time компајлирање. Јаваскрипт се још користи и за развој видео игара, десктоп и мобилних апликација као и у мрежном програмирању на серверској страни са извршним окружењима као што је Node.js.

ЈС припада ОО парадигми, јер програмер не дефинише само тип података, него и врсту операција (функција) које се могу применити на структуре података. На овај начин, структура података постаје објекат који укључује и податке и функције. Поред тога, програмери могу да праве односе између једног и другог објекта. На пример, објекти могу да наследе карактеристике од других објеката.[3] Скриптни је језик, јер се састоји од серије команди које се очитавају у интерпретеру, а да се претходно не компајлира садржај. Односно не преводи се у машински језик, него се команде директно „читају” из кода (изворног кода или бајтовског кода). Због ове карактеристике ЈаваСцрипт се извршава на страни корисника (client side), тј. на рачунару на којем је покренут садржај са Јаваскриптом. Сам по себи, HTML дозвољава посетиоцу да пошаље податке ка серверу на обраду. Нажалост, ако ти подаци нису валидни цео процес се мора поновити све док се не унесу валидни подаци. Ово је један од основних разлога настанка Јаваскрипта који проверава веродостојност података на клијентовом прегледачу и тако олакшава посао на вебу.[3]

Јаваскрипт је најпопуларнији скриптни језик на Интернету којег подржавају сви познатији прегледачи (Internet Explorer, Mozilla Firefox, Netscape, Opera, Safari). Неке примене ЈС су:

  • Јаваскрипт даје HTML дизајнерима алат за програмирање - HTML аутори обично нису програмери, али Јаваскрипт је скриптни језик са веома једноставном синтаксом.
  • Јаваскрипт може да динамички унесе код у HTML страну,
  • Јаваскрипт може да реагује на догађаје - Јаваскрипт може да се подеси тако да се изврши кад се нешто деси, нпр. кад се страна учита или кад корисник кликне на HTML елемент,
  • Јаваскрипт може да прочита или испише HTML елементе - Јаваскрипт може да прочита и да промени садржај HTML елемента,
  • Јаваскрипт може да се користи за проверу исправности унетих података - Јаваскрипт може да се користи за проверу исправности података унетих у форму, да провери исправност података пре него што се пошаљу серверу,
  • Јаваскрипт може да се користи за детектовање броwсер-а корисника - у зависности од браузера, учитава се страна специјално дизајнирана за тај браусер,
  • Јаваскрипт може да се користи за креирање кукија - Јаваскрипт може да се користи за чување и враћање информација о рачунару посетиоца, итд.

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

Почеци у Нетскејпу[уреди | уреди извор]

Године 1993, Национални центар за суперкомпјутерске апликације (енгл. National Center for Supercomputing Applications - NCSA), који је део Универзитета у Илиноису, објавио је Мозаик, први популарни графички веб-читач, који је одиграо значајну улогу у развоју Веба који је у то време био на самом зачетку. 1994. године у Маунтин Вјуу, у Калифорнији, основана је компанија под називом Мозаик Комјуникејшн, која је запослила већину аутора оригиналног веб-читача Мозаик како би развили Мозаик Нетскејп. Касније ће се испоставити да овај веб-читач неће имати никакве сличности са оригиналним Мозаиком. Интерни назив за овај веб-читач био је "Мозила", што је значило "убица Мозаика" енгл. Mosaic killer, јер је циљ компаније био да замени Мозаик као најпопуларнији веб-читач на свету. Прва верзија веб-читача, Мозаик Нетскејп 0.9, објављена је крајем 1994. године. За само четири месеца овај веб-читач је већ заузео три четвртине тржишта веб-читача и постао је најпопуларнији веб-читач деведесетих година 20. века. Како би избегли проблеме са ауторским правима са НЦСА, веб-читач је исте године добио нов назив, Нетскејп навигатор, a компанија Нетскејп Комјуникејшн.

У овој компанији су на време схватили да би Веб требало да постане динамичнији. Оснивач компаније, Марк Андресен, тврдио је да HTML-у треба пратећи језик који веб дизајнери и програмери могу лако да користе за склапање компоненти као што су слике и додаци, чији би се код писао директно у HTML коду веб странице. Како би уопште започели са радом, компанија Нетскејп Комјуникејшн је морала да сарађује са компанијом Сан Мајкросистемс да би у овај веб-читач уградили њихов статични програмски језик Јаву и тиме се борили са конкурентском компанијом Мајкрософт за већу наклоност корисника и усвајање веб технологија и платформи.[6] Одлучено је да се креира програмски језик комплементаран Јави, са сличном синтаксом, што је у старту значило одбацивање подршке за друге програмске језике као што су Перл, Пајтон, TCL или Scheme. Како би одбранили идеју Јаваскрипта у односу на понуду конкурената, компаније је био потребан прототип. Ајк је написао прототип будућег програмског језика за 10 дана, у мају 1995. године.

Иако је развијан под кодним називом Мока, језик је званично назван Лајвскрипт приликом првог објављивања бета верзија Нетскејп навигатора 2.0, септембра 1995. године, али је убрзо преименован у Јаваскрипт[1] са објављивањем Нетскејп навигатора 2.0 бета 3 верзије, у децембру исте године.[7] Коначан избор имена је изазвао конфузију код корисника јер је створен утисак да је ово још једна варијанта програмског језика Јава, а сам избор имена је окарактерисан као маркетиншки трик Нетскејпа како би се Јаваскрипт представио као најновији веб програмски језик.

Често се јавља погрешно тумачење да је на развој Јаваскрипта битно утицао веб скриптни језик Ц-- развијен од стране компаније Номбас (овај скриптни језик не треба мешати са касније развијеним језиком Ц--, 1997. године]).[8][9] У прилог томе иде и чињеница да Брендан Ајк није никад чуо за Ц-- пре него што је креирао ЛајвСкрипт.[10] Номбас је обезбеђивао уграђене скриптне веб странице Нетскејпу, иако концепт скриптних веб страница није био нов, као што се може видети у веб-читачу ViolaWWW.[11] Касније је компанија Номбас одлучила да у свом производу СкриптИз, Ц-- замени Јаваскриптом и учествовала је у стандардизацији ЕКМАСкрипта кроз ТЦ39 групу.[12]

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

У децембру 1995. године, убрзо након објављивања Јаваскрипта за веб-читаче, компанија Нетскејп је представила и имплементацију овог језика за сервере кроз Нетскејп ентерпрајз сервер (енгл. Netscape Enterprise Server).

Од средине 2000-их, објављено је неколико серверских Јаваскрипт имплементација, међу којима најпознатији Node.js (2009. године).[13]

Maskota JavaScript-a

Прихватање Јаваскрипта од стране Мајкрософта[уреди | уреди извор]

Мајкрософт је 1996. године представио своје скриптне језике, ВБСкрипт и ЈСкрипт. ЈСкрипт, обрнута имплементација Нетскејповог Јаваскрипта, била је део Интернет Експлорера 3. ЈСкрипт је такође био доступан и као серверска имплементација скриптног језика у Интернет Информационом Серверу. Интернет Експлорер 3 је по први пут донео подршку за CSS и различите HTML додатке, али се водило рачуна о томе да свака имплементација буде значајно различита од оне у Нетскејп навигатору.[14][15] Ове разлике су отежавале дизајнерима и програмерима да праве веб-сајтове који би функционисали у оба веб-читача, што је довело до појаве логоа "најбољи приказ у Нетскејпу" и "најбољи приказ у Интернет Експлореру" који су обележили почетне године борбе међу веб-читачима.[16] Јаваскрипт је почео да стиче репутацију препреке вишеплатформском и стандардизованом Вебу. Програмери су се прихватили задатка да покушају да праве веб-сајтове који ће радити у оба најпознатија веб-читача иако већина није имала времена за то.[14] Објавом Интернет Експлорера 4, Мајкрософт је представио концепт динамичког HTML-а, али су разлике у имплементацији језика и различити власнички објектни модели докумената представљали препреке за ширу примену Јаваскрипта на Вебу.[14]

Стандардизација[уреди | уреди извор]

У новембру 1996. године, Нетскејп је стандардизовао Јаваскрипт како би остале компаније које развијају веб-читаче могле да га имплементирају у својим производима. То је довело до званичног објављивања спецификације језика ЕКМАСкрипт која је објављена у првој верзији ЕКМА-262 стандарда у јуну 1997. године, чија је најпознатија имплементација управо Јаваскрипт. ЕкшнСкрипт и ЈСкрипт су такође познате имплементације ЕКМАСкрипта са додацима.

Процес стандардизације је настављен у циклусима, објављивањем ЕКМАСкрипта 2 у јуну 1998. године, који доноси одређене промене како би се прилагодио ISO/IEC 16262 међународном стандарду. Са објављивањем је настављено у децембру 1999. године са ЕКМАСкриптом 3, који представља основу за Јаваскрипт какав данас знамо. Развој оригиналног ЕКМАСкрипта 4, који је водио Валдемар Хорват (тада запослени у Нетскејпу, данас у Гуглу), почео је 2000. године и на самом почетку је изгледало као да Мајкрософт учествује у томе па је чак и имплементирао неке карактеристике у њихов ЈСкрипт .НЕТ језик.

Временом је било јасно да Мајкрософт не намерава да сарађује нити да имплементира Јаваскрипт у ИнтернетЕксплореру, иако нису имали достојну алтернативу већ само парцијално завршену имплементацију .НЕТ серверске стране. Због тога је до 2003. године развој ЕКМАСкрипта 4 био запостављен.

Следећа битна година за Јаваскрипт била је 2005, коју су обележила два велика историјска догађаја битна за развој Јаваскрипта. Прво су се Брендан Ајк и Мозила придружили ЕКМА Интернашонал као непрофитни чланови и започет је рад на ЕКМАСкрипту за XML (E4X), ЕКМА-357 стандарду, који је потекао од Мајкрософтових бивших запослених који су сад радили за БЕА Системс. То је довело до заједничког рада са компанијом Макромедија (коју је касније купио Адоби Системс), који су применили E4X у свом ЕкшнСкрипту 3 (ЕкшнСкрипт 3 је био форк оригиналног ЕКМАСкрипта 4).

Заједно са Макромедијом поново је отпочет развој ЕКМАСкрипта 4 са циљем стандардизације компоненти из ЕкшнСкрипта 3. На крају овог процеса, Адоби Системс је објавио ЕкшнСкрипт виртуелну машину верзије 2, кодног назива Тамарин, као пројекат отвореног кода. Међутим, Тамарин и ЕкшнСкрипт 3 су били значајно различити од онога чему Јаваскрипт тежи, што су обе стране увиделе током 2007. и 2008. године.

На тржишту је владао хаос међу различитим играчима. Даглас Крокфорд, тада запослени у Јаху-у, удружио се са Мајкрософтом 2007. године како би се супротставио ЕКМАСкрипт 4 стандарду, што је довело до развоја ЕКМАСкрипт 3.1 стандарда. Иако развој ЕКМАСкрипт 4 стандарда никад није довршен, он је битно утицао на наредне верзије.[17]

Док се све ово дешавало, заједнице отвореног кода и програмера су наставиле на развоју револуционарних могућности са Јаваскриптом. Напор заједнице је добио замајац 2005. године када је Џеси Џејмс Гарет осмислио концепт Ајакса и описао скуп технологија, где је ослонац био на Јаваскрипту, које се користе за креирање веб апликација код којих се подаци могу учитавати у позадини, без потребе да се цела страница учита, што је довело до развоја још динамичнијих апликација. Све ово је довело до периода препорода у коришћењу Јаваскрипта, предвођеног библиотекама отвореног кода и заједницама које су се формирале око њих, са библиотекама као што су Прототајп, џејКвери, Доџо Тулкит, МуТулс и друге.

У јулу 2008. године, раздвојене стране су се састале у Ослу. То је довело до евентуалног договора почетком 2009. године, да се ЕКМАСкрипт 3.1 стандард преименује у ЕКМАСкрипт 5 и да се језик унапреди пратећи агенду познатију као Хармони (енгл. Harmony). ЕКМАСкрипт 5 је коначно објављен у децембру 2009. године.

У јуну 2011. године, ЕКМАСкрипт 5.1 је објављен како би се у потпуности изједначио са трећим издањем ISO/IEC 16262 међународног стандарда. ЕКМАСкрипт 2015 је објављен у јуну 2015. године. Тренутна верзија ЕКМАСкрипт 2016 је објављена у јуну 2016. године.[18]

Каснији развој[уреди | уреди извор]

Јаваскрипт је постао један од најпопуларнијих програмских језика на Вебу. Међутим, на самом почетку језик није био на добром гласу међу програмерима професионалцима, због тога што су му, између осталог, циљна публика били веб аутори и остали "аматери".[19] Са појавом Ајакса Јаваскрипт се враћа у центар пажње и постаје атрактиван за све више програмера. Резултат тога је умножавање обимних фрејмворка и библиотека, побољшана Јаваскрипт рутина програмирања и повећано коришћење Јаваскрипта изван веб-читача, што је у директној корелацији са значајним развојем серверских Јаваскрипт платформи.

У јануару 2009. године, представљен је пројекат КомонЈС (енгл. CommonJS) са циљем стандардизације заједничких библиотека, углавном за Јаваскрипт развој изван веб-читача.[20]

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

Заштитни знак[уреди | уреди извор]

"Јаваскрипт" је заштитни знак Оракл корпорације.[21] Користи се под лиценцом за технологију коју је осмислила и имплементирала компанија Нетскејп Комјуникејшн и њени наследници као што је Мозила фондација.[22]

Карактеристике[уреди | уреди извор]

Наведене карактеристике су заједничке за све ЕКМАСкрипт имплементације, осим ако није експлицитно другачије наведено.

Универзална подршка[уреди | уреди извор]

Сви модерни вебчитачи подржавају Јаваскрипт са уграђеним интерпретерима.

Императивни и структурирани[уреди | уреди извор]

Јаваскрипт подржава већи део структуриране синтаксе програмског језика C (нпр. if исказе, while петље, switch исказе, do while петље, и др.). Делимичан изузетак је опсег променљивих: Јаваскрипт је у оригиналу подржавао само функционални опсег променљивих помоћу декларације var. ЕКМАСкрипт 2015 доноси кључну реч let за блоковски опсег, тако да сада Јаваскрипт подржава функционални и блоковски опсег. Као и C, Јаваскрипт прави разлику између исказа и израза. Још једна битна разлика у односу на C је и аутоматско уметање краја наредбе односно карактера тачка-зарез, па није потребно експлицитно наглашавати крај наредбе са знаком тачка-зарез.[23]

Динамични[уреди | уреди извор]

Куцање
Као и већина скриптних језика, Јаваскрипт је језик са динамичном провером куцања; тип је повезан са сваком вредношћу пре него са свакоим изразом. На пример, уколико имамо неку променљиву која је везана за број, та иста променљива касније може бити везана за стринг.[24] Јаваскрипт подржава различите начине провере типа објекта.
Провера приликом извршавања
Јаваскрипт садржи eval која може да извршава исказе у облику стрингова у време извршавања.

Прототипни (објектно-оријентисани)[уреди | уреди извор]

Јаваскрипт је скоро у потпуности објектно заснован скриптни језик. У Јаваскрипту, објекат представља асоцијативни низ, наглашен помоћу прототипа; сваки кључ у облику низа карактера представља назив својства објекта за који постоји два синтаксна начин за дефинисање таквог назива; нотација са тачком, енгл. dot notation (obj.x = 10) и нотација са заградама, енгл. bracket notation (obj['x'] = 10). Својство се може додати или обрисати за време изврашавања кода. Већина својстава објекта (или било ког својства које припада ланцу наслеђивања прототипа објекта) се може набројати коришћењем for...in петље. Јаваскрипт садржи ограничен број уграђених објеката, као што су Date и Function.

Прототипови
Јаваскрипт користи прототипове у случајевима у којима други објектно-оријентисани програмски језици користе класе за наслеђивање.[25] Помоћу прототипова у Јаваскрипту је могуће симулирате многе карактеристике класа.[26]
Функције као конструктори објеката
Функције осим своје главне функције, имају и улогу конструктора објеката. Додавањем префикса new испред позива функције, креира нову инстанцу прототипа, наслеђујући својства и методе конструктора (уклјучујући и својства Object прототипа).[27] ЕКМАСкрипт 5 садржи методу Object.create, која омогућава експлицитно креирање инстанце без аутоматског наслеђивања Object прототипа (старија окружења могу додељивати прототипу вредност null).[28] Својство prototype конструктора одређује који објекат се користи као интерни прототип новог објекта. Нове методе се могу додати изменом прототипа функције која се користи као конструктор. Конструктори доступни у самом Јаваскрипту, као што су Array и Object, такође имају своје прототипове који могу да се измене. Иако могућа, измена Object прототипа није добра пракса због тога што већина објеката у Јаваскрипту наслеђује методе и својства из Object прототипа и потенцијално не очекују његову измену.[29]
Функције као методе
За разлику од већине објектно-оријентисаних језика, у Јаваскрипту не постоји разлика између дефинисања функција и дефинисања метода. Најчешће, разлика постоји код позивања функције; када се функција позива као метода објекта, њена локална кључна реч this се везује за тај објекат приликом позивања.

Функционални[уреди | уреди извор]

Функција је прве класе и може се третирати као објекат. Као таква, функција може да садржи својства и методе, као што је .call() и .bind().[30] Угњеждена функција је функција која се дефинише унутар друге функције. Оваква функција се креира сваки пут када се позове надређена функција. Додатно, свака надређена функција формира лексички блок; Лексички блок надређене функције (укључујући константе, локалне променљиве и вредности аргумената) постају саставни део сваког објекта подређене функције, чак и након завршетка извршавања надређене функције.[31] Јаваскрипт подржава и анонимне функције.

Делегирани[уреди | уреди извор]

Јаваскрипт подржава имплицитно и експлицитно делегирање.

Функције као улоге (Traits и Mixins)
Јаваскрипт подразумевано подржава различите функције имплементиране у виду улога (енгл. Roles)[32] и патерна као што су Traits[33][34] и Mixins.[35] Оваква функција дефинише додатно понашање барем једне методе везане за кључну реч this унутар тела функције. Улога се након тога експлицитно додељује помоћу call или apply наредбе објектима који треба да садрже додатно понашање које се не дели кроз ланац прототипова.
Композиција објеката и наслеђивање
Иако експлицитна делегација заснована на функцијама покрива композицију објеката у ЈаваСкрипт-у, имплицитна делегација се већ обавља сваки пут када се ланац прототипова проширује како би, нпр. пронашли методу која је потенцијално повезана али не и у директној вези са објектом. Када се метода једном пронађе, она се позива у контексту објекта. На овај начин је наслеђивање у ЈаваСкрупт-у покривено аутоматизмом делегације који се везује за својства прототипа у оквиру функција у конструктору.

Остале карактеристике[уреди | уреди извор]

Извршно окружење
ЈаваСкрипт се најчешће ослања на извршно окружење (нпр. Веб претраживач) как оби обезбедило објекте и методе помоћу којих скрипте врше интеракцију са окружењем (нпр. Објектни модел документа веб странице). Такође се на извршно окружење ослања и да би обезбедили могућност укључивања скрипти (нпр. помоћу HTML script елемента). Ово није особина самог програмског језика, иако је заједничка карактеристика многих ЈаваСкрипт имплементација.
ЈаваСкрипт обрађује поруке из реда једну по једну. Пре него што учита нову поруку, ЈаваСкрипт позива функцију везану за ову поруку, чиме се креира оквир позивног стека (аргументи функције и локалне променљиве). Позивни стек се шири и расте у зависности од потреба функције. Пре самог изврђавања функције, када је стек празан, ЈаваСкрипт наставља са обрадом следеће поруке у реду. То се још назива и петљом догађаја (енгл. event loop) и описује као "скок на завршетак" јер је свака порука у потпуности обрађена пре него што се у обзир узме следећа порука. Без обзира на то, модел конкурентности програмског језика дефинише да петља догађаја не блокира само извршавање: улазно/излазне операције програма се одвијају путем догађаја и повратних функција. То значи, на пример, да ЈаваСкрипт може да обради клик мишем док чека да упит над базом података врати тражену информацију.[36]
Варијативне функције
Функцији може бити прослеђен неограничен број аргумената. Функција им приступа путем формалних параметара или кроз локални arguments објекат. Варијативне функције се такође могу креирати и помоћу bind методе.
Низ и литерали објеката
Као и код многих програмских језика, низови и објекти (асоцијативни низови у другим језицима) се могу креирати помоћу скраћене синтаксе. Заправо, ови литерали формирају базу JSON формата података.
Регуларни изрази
ЈаваСкрипт такође подржава регуларне изразе на начин сличан ономе у програмском језику Перл, који пружа прецизну и снажну синтаксу за манипулацију текстом која је доста напреднија од уграђених функција знаковних низова.[37]

Специфични додаци произвођача[уреди | уреди извор]

Развојем ЈаваСкрипт програмског језика управља Мозила Фондација, док се нове функционалности периодично додају језику. Међутим, само одређени покретачи ЈаваСкрипт-а подржавају ове нове функционалности:

  • гетер и сетер функције (подржавају их Веб-кит, Gecko, Опера[38], ActionScript и Rhino)[39]
  • условне catch клаузуле
  • протокол итератора (преузето из Пајтона)
  • површни генератори-потпрограми (преузето из Пајтона)
  • проширивање низова и генератор израза (преузето из Пајтона)
  • одговарајући опсег блока помоћу кључне речи let
  • уништавање низова и објеката (ограничен облик слагања обрасца)
  • прецизни изрази функција (function(args) expr)
  • ECMAScript за XML (E4X), додатак који омогућава подразумевану XML подршку за ECMAScript (није подржано у Мозила Фајерфоксу од верзије 21[40])

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

Појам Ванила Јаваскрипт или Ванила ЈС се односи на Јаваскрипт који није проширен неким фрејмворком или додатним библиотекама. Скрипт написан Ванила Јаваскриптом је чист Јаваскрипт код.

Структуре података[уреди | уреди извор]

Примитивни типови[уреди | уреди извор]

Бројеви: све вредносте су представљене као реални бројеви (64 бита, IEEE 754 стандард). У случају прекорачења (overflow) генерише се +/- Infinity.[41] У случају поткорачења (underflow) генерише се 0/ "negative zero". Дељење нулом не резултира грешком осим у случају 0/0 – тада се генерише NaN. Infinity и NaN су глобалне променљиве које се могу само читати.

Стрингови су непроменљиве секвенце 16-битних вредности, углавном Уникодних карактера и морају бити под двоструким или једноструким наводницима ("string", '123str45', "vise reci", ...). Такође, битно је запамтити да индекси крећу од нуле, а не од јединице.[41] Стринг може садржати и HTML кодове, као и следеће специјалне текст ознаке:

  • \t - табулатор
  • \n - нова линија
  • \r - повратак на почетак реда
  • \b - једно слово уназад
  • \f - form feed

Логички (булов) тип: true/false.

Специјалне вредности[уреди | уреди извор