Den här artikeln behöver fler eller bättre källhänvisningar för att kunna verifieras. (2018-04) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
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.
Javascript | |
Paradigm | multi-paradigm |
---|---|
Gavs ut | 1995 |
Skapat av | Brendan Eich |
Utvecklare | många |
Senaste version | ECMAScript 2021 (2021) |
Datatypsdisciplin | weak, duck, dynamic |
Implementationer | SpiderMonkey, Rhino, WebKit, V8, KJS, Carakan, Chakra |
Influerat av | AWK, C, HTML, Java, Perl, Python, Scheme, Self |
Influerat | Actionscript, Coffeescript, TypeScript, Dart, JScript .NET, Objective-J, QML, TIScript |
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
redigeraJavascript 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]
Kodexempel
redigeraJavascript-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
redigeraJavascript 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
redigeraJavascript 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
redigeraFö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
redigeraReact ä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
redigeraSe även
redigeraKällor
redigera- ^ [a b] ”JavaScript | MDN” (på amerikansk engelska). developer.mozilla.org. https://developer.mozilla.org/en-US/docs/Web/JavaScript. Läst 19 mars 2022.
- ^ ”Document Object Model (DOM) - Web APIs | MDN” (på amerikansk engelska). developer.mozilla.org. https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model. Läst 19 mars 2022.
- ^ ”1.2 History of Deno”. https://choubey.gitbook.io/internals-of-deno/introduction/history-of-deno. Läst 18 november 2024.
- ^ Krill, Paul. ”JavaScript founder Brendan Eich takes over as Mozilla CEO”. http://www.infoworld.com/article/2610843/web-browsers/javascript-founder-brendan-eich-takes-over-as-mozilla-ceo.html. Läst 8 augusti 2015.
- ^ [a b] ”JavaScript gör webben roligare”. Internetmuseum. https://www.internetmuseum.se/tidslinjen/javascript-spraket-som-gor-webben-roligare/. Läst 10 april 2018.
- ^ ”JavaScript reference - JavaScript | MDN” (på amerikansk engelska). developer.mozilla.org. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference. Läst 19 mars 2022.
Externa länkar
redigera- Javascript på Wikibooks.