Javascript

Javascript, i marknadsföringssyfte skrivet JavaScript och förkortat JS, är ett prototyp-baserat skriptspråk som är dynamiskt, svagt typat och hanterar funktioner som första-klass-objekt. Javascript används främst på klientsidan i webbtillämpningar, det vill säga exekveras i en webbläsares Javascriptmotor. Då Javascript används i webbläsare arbetar det mot ett gränssnitt som kallas Document Object Model (DOM). Vanligtvis inbäddas Javascript i, eller inkluderas från, HTML-sidor. Exempel på användningsområden är kontroll av ifyllda fält innan formulär skickas till en server, funktioner för att visa eller dölja delar av en sida och växling av annonsbilder med visst intervall. Javascript kan även användas för mer avancerade funktioner i en webbläsare såsom spel och bildbehandling.

Skriptspråket kan implementeras i andra program än webbläsare. Ett numera vanligt exempel av implementation utanför webbläsaren är Node.js, som tillåter utvecklaren att använda Javascript på serversidan för att kunna arbeta med anslutningar till databaser, skicka e-post-meddelanden och så vidare.

En Javascriptmotor är en specialiserad programvara som exekverar Javascript, särskilt för webbläsare.

Historia och namngivning 
Javascript utvecklades ursprungligen av Brendan Eich, då under namnet Mocha som senare ändrades först till Livescript men i och med att Netscape ungefär samtidigt började stödja Sun Microsystems programspråk Java i syfte att kunna ha miniprogram i webbläsaren, valde man att kalla det Javascript, främst i marknadsföringssyfte. Förutom namnet har Javascript inget med programspråket Java att göra förutom att de delar programspråket C:s syntax. Det faktum att namnen liknar varandra har lett till en del förvirring.

Javascript dök för första gången upp i Netscape Navigator 2.0B3, släppt i december 1995. 
Microsoft skapade en egen variant av Javascript, som namngavs JScript för att undvika varumärkesintrång. Denna kom i version 3.0 av Internet Explorer. JScript och Javascript skilde sig markant på inbyggda objekt och funktioner vilket ledde fram till behovet av en gemensam standard för skriptspråket, standarden kom att kallas för ECMA-262, även känt som Ecmascript.

Kodexempel 
Javascript-koden i detta exempel är inbäddad i HTML-koden med hjälp av en script-tagg och skriver ut texten "Hello, World!":
<script>
  console.log('Hello, World!');
</script>

Man kan även skapa en funktion på följande vis.
<script>
  function minFunktion() {
     console.log('Hello, World!');
  }
</script>

Funktionen kan sedan anropas via ett HTML-element, exempelvis genom att klicka på en hyperlänk.
<a href="#" id="link">Klicka här för att köra funktionen</a>
<script>
document.querySelector('#link').addEventListener('click', minFunktion);
</script>

Async/Await och löften 

Javascript stöder async/await och löften för att utföra asynkrona operationer. Kombinationsmetoder för flera löften infördes nyligen i Javascript-specifikationen. De möjliggör kombinationen av flera löften, och utföringen av olika operationer beroende på situationen. De införda metoderna är: Promise.race, Promise.all, Promise.allSettled och Promise.any. Exempel på Promise.all:

let löfte1 = fetch(länk);
let löfte2 = 35;

Promise.all([
  löfte1,
  löfte2
])
.then((data) => {
  console.log(data)
})
.catch((err) => {
  console.log(err)
});

Syntax 
Javascript stöder det mesta av syntaxen i C (till exempel if-satser, while-slingor, switch-satser, osv.).
Som i de flesta skriptspråk är variabeltyper inte knutna till variabeln själv, utan snarare till dess värde. Till exempel så kan variabeln x vara en sträng som innehåller siffror. Det betraktas då inte som ett tal, utan just som en sträng. Den strängen kan sedan konverteras till ett tal dynamiskt, t.ex:
// En funktion så att vi slipper upprepning av kod
function tala_om_variabel_typ(x) {
    console.log('Variabeln x är av typen "'+typeof(x)+'" och innehåller värdet ('+x+').');
}

var x = "123"; // Tilldela x en sträng med tecken "1", "2" och "3".

tala_om_variabel_typ(x);

// Detta trick konverterar en sträng med siffror till ett tal.
x-=0; // x=+x fungerar lika bra.

tala_om_variabel_typ(x);
Vilket ger resultatet:Variabeln x är av typen "string" och innehåller värdet (123).
Variabeln x är av typen "number" och innehåller värdet (123).

Javascript stöder olika sätt att testa vilken typ av variabel det handlar om. Man kan även skriva funktioner i Javascript-koden som man kan kalla på senare i HTML-koden. 
Till exempel:
<script>
function bytBild() {
    document.images["bild"].src = "bild2.jpg";
    return true;
}
</script>
Koden ovanför innebär att om funktionen "bytBild" kallas i HTML-koden så kommer bilden med namnet "bild" att ändras till bilden "bild2.jpg". Detta kan vara användbart om man vill göra en knapp som ska se annorlunda ut när man håller musen över den.

Skriptbibliotek och ramverk 
För att förenkla användandet av Javascript, DOM och för att undvika återuppfinnandet av hjulet (d.v.s. att man i onödan skriver sådan kod som andra redan har skapat) har erfarna programmerare skrivit Javascript-bibliotek som innehåller funktioner och objekt som man kan återanvända.

Lista på några Javascript-bibliotek och ramverk 
 Prototypejs 
 script.aculo.us 
 Dojo Toolkit 
 Mochikit 
 Jquery 
 Mootools 
 React 
React är ett fritt "front-end" Javascript-bibliotek, som används bl.a. för att bygga enkelsidiga applikationer eller mobilapplikationer med hjälp av React Native. React använder sig ofta av diverse andra bibliotek för att möjligöra mera funktionalitet. 
 Angular 
Angular är ett TypeScript-baserat webb-ramverk för att också bygga enkelsidiga applikationer.

Liknande programspråk 
 C++
 C (programspråk)
 Java
 Basic

Se även 
 Ecmascript
 JScript
 AJAX
 JSON
 Jaxer
 Jquery

Källor

Externa länkar 
 

Javascript
Prototyp-baserade programspråk
Objekt-baserade programspråk
Domänspecifika programspråk