JavaScript

: *Athugið að [[Java (forritunarmál)|*'Java**]] er annað og óskylt forritunarmál.''

**JavaScript** (eða **Jövuskrift*') er [[forritunarmál]] sem er oft notað á [[vefsíða|vefsíðum]]. Það var upphaflega [[túlkur (tölvunarfræði)|túlkað]] *(ekki þarf að þýða það fyrirfram, en nú er algengast að sé þýtt á bak við tjöldin, JIT, svo það er ekki lengur hægvirkt)* og [[aðra forritunarmál|æðra]] *(líkist meira hugsunum mannsins en þeim ferlum sem tölvan keyrir að lokum)*. Það má bæði nota til að keyra litlar skriftur og stór hugbúnaðarverkefni. Jövuskrift náði mikilli útbreiðslu þar sem það var eina forritunarmálið sem var hægt að nota til að búa til gagnvirkar vefsíður án þess að notandi þyrfti að hlaða niður aukalegum hugbúnaði fyrir [[Vafri|vafrann]] sinn. Þess vegna er Jövuskriftar-kóði notaður á flestum stærri vefsíðum í dag, þar getur það hvort tveggja framkvæmt litla útreikninga og keyrt heilu tölvuleikina. Jövuskrift er í dag notuð til að skrifa [[vefsíða|vefsíður]], [[netþjónn|netþjóna]], skriftur, [[forrit]], og [[smáforrit]].

JavaScript er stutt af vöfrum (en nú líka notað víðar) en ekki eina forritunarmálið sem hægt er að nota fyrir þá. Bæði er hægt að nota [[WebAssembly]], sem nánast allir vafrar (þ.e. aðrir en Internet Explorer 11) styðja, beint en aðallega með því að nota önnur forritunarmál, s.s. C eða C++, sem þýðast yfir í það. Líka er hægt að nota önnur mál, s.s. TypeScript, sem þýðast yfir í JavaScript (og þar með hafa nákvæmlega sama stuðning í vöfrum), eða jafnvel öll þessi mál saman. Java var áður fyrr stutt vel í vöfrum, en ekki lengur, og þó svo að það eru líkindi milli Java og JavaScript eru það ólík og aðskilin mál sem hafa mjög mismunandi hönnun (þó bæði hlutbundin, er Java t.d. ekki byggt á prótótýpum).

Þó svo að nöfn forritunarmálanna JavaScript og Java séu svipuð, og svo málskipan og stöðluðu forritasöfnin, þá eru forritunarmálin alveg aðskilin og þau hafa mjög mismunandi í hönnun. Við hönnun JavaScript voru áhrifavaldarnir forritunarmálin Self og Scheme. Raðbundna sniðið (e. serialization format) [[JSON]], sem er notað til að geyma [[gagnagrind]]ur í skrám eða til að senda þær í gegnum netið, byggist á JavaScript (en hægt að nota JSON með hvaða forritunarmáli sem er).

Ásamt HTML og CSS er JavaScript eitt af megintækninni á bak við veraldarvefinn. JavaScript virkjar gagnvirkar vefsíður og er mikilvægur hluti vefforrita. Meirihluti vefsíðna nota það, og vinsælustu vafrarnir hafa sérstakar JavaScript vélar til að keyra kóðann.

== Saga ==
Árið 1995 var *Netscape Navigator* langvinsælasti vafrinn, en hann skorti skriftumál til að gera síður gagnvirkar. Brendan Eich hannaði þá fyrstu útgáfuna af Jövuskrift á 10 dögum. Málfarsreglum Jövuskriftar svipar nokkuð til forritunarmálsins [[Java (forritunarmál)|Jövu]], en þó er enginn skyldleiki á milli þeirra. Bæði eiga nöfnin að vísa til tegundar [[Kaffi|kaffibaunar]] sem kemur frá [[Indónesía|indónesísku]] eyjunni [[Java|Jövu]].

Í dag styðja í raun allir [[vafri|vafrar]] Jövuskrift, og hér áður fyrr var hægt að taka stuðningunn úr sambandi með stillingu en það er ekki almennur valmöguleiki lengur því mjög margar, ef ekki flestar, nútíma vefsíður nota málið og myndi brotna við það. Þess vegna var möguleikinn á að afvirkja tekinn út, og er í besta falli möguleiki eftir krókaleiðum, fyrir þá sem vilja eða þurfa.

Jövuskrift var stöðluð árið [[1997]] undir heitinu [[ECMAScript]] sem er nú orið að [[ISO|ISO-staðli]].

== Dæmi ==

=== Prentun ===
Hægt er að láta upplýsingar birtast með eftirfarandi skipan:

<syntaxhighlight lang="javascript">
console.log("Góðan dag!")
</syntaxhighlight>

Hér þýðir *console* = mælitækjaborð, og *log* = að skrá.

=== Föll ===
Skrifa má [[Fall (stærðfræði)|föll]] *(functions)* svona:

<syntaxhighlight lang="javascript">
function Meðaltal (fyrsta_tala, önnur_tala) {
  return (fyrsta_tala + önnur_tala) / 2
}

console.log( Meðaltal(5, 8) )
</syntaxhighlight>

Hér tekur fallið *„Meðaltal“* inn tvær mismunandi tölur, finnur summu þeirra og deilir svo í tvennt. Síðasta lína kóðans prentar svo út meðaltal fimm og átta, sem er sex og hálfur.

=== Fibonacci-runan ===
Hin fræga [[Fibonacci-runa]] *(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …)'' er fengin með því að summa saman tvær tölur og summa síðan síðustu töluna við nýju niðurstöðuna, og þannig endalaust áfram. Formleg stærðfræðileg skilgreining á rununni er fræg fyrir að vísa í sig sjálfa, hún lítur svona út:

 
  F_n := F(n):=
  \begin{cases}
    0             & \mbox{ef } n = 0; \\
    1             & \mbox{ef } n = 1; \\
    F(n-1)+F(n-2) & \mbox{ef } n > 1. \\
   \end{cases}


Þessa skilgreiningu má setja upp í Jövuskrift: 

```javascript
/*
  Þetta er fall sem skilar þeirri Fibonacci-tölu sem er númer X.
*/
function Fibonacci(númer) {
  /*
    Ef beðið er um Fibonacci-tölu númer 0 eða 1, þá skilum við bara 0 eða 1
  */
  if (númer < 2) {
    return númer
  }
  /*
    En annars köllum við í fallið sjálft.
    Ef beðið er um Fibonacci-tölu nr. 11 getum við fundið hana með 
    að finna Fibonacci-tölur nr. 10 og 9 og summa þær saman.
    Þær tölur þurfa að fara sömu leið til að finna gildi sitt, 
    og þannig koll af kolli þangað til gildi tölunnar er fundið.
  */
  return Fibonacci(númer - 1) + Fibonacci(númer - 2)
}

/*
  Fibonacci-tala nr. 11 er talan 89, og ef við biðjum 
  fallið um að finna tölu nr. 11 fæst einmitt útkoman 89.
*/
console.log( Fibonacci(11) )
```


## Heimildir