JavaScript er eit høgnivå, tolka programmeringsspråk som primært vert brukt til å lage interaktive og dynamiske nettapplikasjonar. Det er ein essensiell del av nettutvikling, saman med HTML og CSS. Språket vart opphavleg utvikla av Brendan Eich medan han arbeidde hos Netscape, og har utvikla seg til eit allsidig språk som støttar hendelsesdreven, funksjonell og imperativ programmeringsstil. I dag er det ein integrert del av nettteknologiar, med eit breitt økosystem som omfattar mange rammeverk, bibliotek og kjøremiljø, mest merkbart Node.js.
JavaScript vart oppretta i 1995 under namnet Mocha, seinare omdøpt til LiveScript, og til slutt til JavaScript for å dra nytte av populariteten til Java. Den første versjonen vart lansert i Netscape Navigator 2.0, som gjorde det mogleg for utviklarar å legge til dynamisk innhald på nettsider. Språket vart standardisert under European Computer Manufacturers Association (ECMA) som ECMAScript i 1997, med påfølgjande versjonar som introduserte viktige funksjonar som utvida moglegheitene.
Utviklinga av JavaScript inkluderte innføring av funksjonar som objektorientert programmering og asynkron programmering (løfter og tilbakeringingar). Spesielt introduserte ECMAScript 5 (2009) "strengt modus", JSON-støtte og forbedra array-metodar, medan ECMAScript 6 (2015), også kjent som ES6 eller ECMAScript 2015, brakte betydelige endringar som pilfunksjonar, klassar og moduler. Utgjevinga av ES6 markerte eit paradigmeskifte, då det gjorde JavaScript til eit meir robust språk som er eigna for utvikling av storskalapplikasjonar.
I dag er JavaScript allestades til stades i nettutvikling, og driv front-end rammeverk som React, Angular og Vue.js, samt back-end utvikling gjennom Node.js. Språket fortset å utvikle seg med årlege utgjevingar av ECMAScript, som introduserer nye funksjonar og forbedringar. Med den aukande bruken av JavaScript i utvikling av mobilapplikasjonar, skrivebordsapplikasjonar (ved bruk av Electron), og til og med bedriftsapplikasjonar, er relevansen og viktigheita i programvareutviklingslandskapet framleis sterk.
JavaScript er eit dynamisk typa språk, som gjer det mogleg for variablar å halde verdiar av kva som helst type utan eksplisitt typeerklæring.
let eksempel = "Hallo, Verden!";
eksempel = 42; // Ingen feil, eksempel kan endre typar
Funksjonar i JavaScript er førsteklasses borgarar, noko som betyr at dei kan tildelast variablar, sendast som argument og returnerast frå andre funksjonar.
const hels = function(namn) {
return `Hallo, ${namn}`;
};
console.log(hels("Alice")); // Utdata: Hallo, Alice
Introduksjonen av pilfunksjonar i ES6 gir ein meir konsis syntaks for å skrive funksjonar og bind ikkje sin eigen this
.
const leggTil = (a, b) => a + b;
console.log(leggTil(2, 3)); // Utdata: 5
Løfter forenklar asynkron programmering ved å representere ein verdi som kan bli tilgjengeleg i framtida.
const hentaData = () => {
return new Promise((løys, avvis) => {
// simulerer eit API-kall
setTimeout(() => løys("Data mottatt!"), 1000);
});
};
hentaData().then(data => console.log(data)); // Utdata etter 1 sekund: Data mottatt!
Malstrenger gjer det enkelt å interpolere strenger og lage flervalsstrenger.
const namn = "Alice";
const helsing = `Hallo, ${namn}!`;
console.log(helsing); // Utdata: Hallo, Alice!
Destrukturering forenklar utvinning av verdiar frå arrayar eller eigenskapar frå objekt.
const person = { namn: "Alice", alder: 25 };
const { namn, alder } = person;
console.log(namn, alder); // Utdata: Alice 25
Spreioperatoren (...
) gjer det mogleg å utvide element frå ein itererbar, medan restoperatoren samlar attverande element i ein array.
const tal = [1, 2, 3];
const fleireTal = [...tal, 4, 5]; // Utdata: [1, 2, 3, 4, 5]
const sum = (...argument) => argument.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3)); // Utdata: 6
JavaScript støttar klassebasert objektorientert programmering med class
syntaks introdusert i ES6.
class Dyr {
constructor(namn) {
this.namn = namn;
}
snakk() {
console.log(`${this.namn} lagar ein lyd.`);
}
}
const hund = new Dyr("Hund");
hund.snakk(); // Utdata: Hund lagar ein lyd.
JavaScript støttar modulær programmering gjennom ES6-modular som bruker import
og export
nøkkelord.
// modul.js
export const namn = "Alice";
export function hels() {
console.log("Hallo!");
}
// hovud.js
import { namn, hels } from './modul.js';
console.log(namn); // Utdata: Alice
hels(); // Utdata: Hallo!
Asynkron/await syntaks forenklar arbeidet med løfter, og gjer asynkron kode meir synkron ut.
const hentaData = async () => {
const respons = await fetch('https://api.example.com/data');
const data = await respons.json();
return data;
};
hentaData().then(data => console.log(data));
JavaScript køyrer i ulike miljø, med nettlesarmotorar som V8 (Chrome) og SpiderMonkey (Firefox) som dei mest framtredande. Node.js gjer det mogleg å køyre JavaScript på serversida, og gir utviklarar moglegheit til å bygge fullverdige nettapplikasjonar med eit einheitleg språk på både klient- og serversida.
Vanlege IDEar og kodeeditorar for JavaScript inkluderer Visual Studio Code, WebStorm, Atom og Sublime Text. Desse verktøya tilbyr funksjonar som syntaksutheving, intelligent kodefullføring og feilsøking.
For å sette opp eit JavaScript-prosjekt, brukar utviklarar vanlegvis pakkeforvaltarar som npm eller yarn for å handtere avhengigheiter. Ein typisk prosjektstruktur inkluderer ein index.html
fil for nettgrensesnittet, ein hovud JavaScript-fil (oftast main.js
), og kanskje ein package.json
fil for å handtere pakkar.
npm init -y # Initialiserer eit nytt JavaScript-prosjekt med standardinnstillingar
npm install express # Installerer Express-rammeverket
JavaScript vert brukt i ei rekkje applikasjonar, inkludert:
JavaScripts hovudkonkurrentar og alternativ inkluderer:
Kvar språk har sine eigne styrker og svakheiter avhengig av dei spesifikke behova til eit prosjekt eller ei applikasjon.
For å oversette JavaScript-kode til andre språk eller omvendt, kan ein bruke verktøy som Babel (for å transpile moderne JavaScript til eldre versjonar) eller TypeScript (for typekontroll og transpiling til JavaScript). Bibliotek som jQuery kan også hjelpe med DOM-manipulering på tvers av ulike miljø ved å tilby eit konsistent API.
I tillegg til Babel og TypeScript kan andre verktøy hjelpe med å oversette eller konvertere JavaScript-kode: