Hoppa till innehållet

Javascript

Från Wikipedia
(Omdirigerad från JavaScript)
Ej att förväxla med Java (programspråk).
Javascript
Paradigmmulti-paradigm
Gavs ut1995
Skapat avBrendan Eich
Utvecklaremånga
Senaste versionECMAScript 2021 (2021)
Datatypsdisciplinweak, duck, dynamic
ImplementationerSpiderMonkey, Rhino, WebKit, V8, KJS, Carakan, Chakra
Influerat avAWK, C, HTML, Java, Perl, Python, Scheme, Self
InflueratActionscript, Coffeescript, TypeScript, Dart, JScript .NET, Objective-J, QML, TIScript

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.[1] När Javascript används i webbläsare arbetar det mot ett gränssnitt som kallas Document Object Model (DOM), som tillgängliggör HTML-dokumentet som objekt.[2] Exempel på användningsområden för JavaScript på webben ä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.[1] Andra implementationer, däribland Bun och Deno har under 2020-talet utvecklats för att få en nystart för JavaScript på servern. Dessa alternativa motorerna har ofta högre prestanda då de inte behöver stöda legacy-applikationer[3]

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

Historia och namngivning

[redigera | redigera wikitext]

Javascript utvecklades ursprungligen av Brendan Eich,[4] 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.[5]

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.[5]

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

[redigera | redigera wikitext]

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

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.[6] 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

[redigera | redigera wikitext]

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

[redigera | redigera wikitext]

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öjliggöra mera funktionalitet.

Angular är ett TypeScript-baserat webb-ramverk för att också bygga enkelsidiga applikationer.

Liknande programspråk

[redigera | redigera wikitext]

Externa länkar

[redigera | redigera wikitext]