Redigerer
JavaScript
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{infoboks programmeringsspråk}} '''JavaScript''' er et [[høynivåspråk|høynivå]]-[[programmeringsspråk]]. Sammen med [[HTML]] og [[Cascading Style Sheets|CSS]] er det en av grunnsteinene i moderne [[World Wide Web|web]]-utvikling, og alle moderne [[nettleser]]e kan kjøre JavaScript-programmer uten [[Programvareutvidelse|utvidelser]]. Språket kan brukes både til komplekse [[webapplikasjon]]er og som et enklere [[skriptspråk]]. JavaScript er standardisert igjennom spesifikasjonen kjent som [[ECMAScript]]. JavaScript er et [[tolkede programmeringsspråk|tolket språk]], med støtte for både prototypebasert [[Objektorientert programmering|objektorientering]] og [[Funksjonell programmering|funksjonell programmering]]. Språket er kjent for å ha [[førsteklasses funksjoner]], samt [[dynamisk typing|dynamiske datatyper]] som implisitt konverteres under kjøring. Språket var opprinnelig designet for bruk på web, men siden slutten av 2000-tallet har JavaScript også i stadig større grad blitt brukt som serverside-språk, blant annet igjennom [[Node.js]]-plattformen. == Historie == === Begynnelsen === Den første utgaven av JavaScript ble utviklet i 1995 av programmereren [[Brendan Eich]], som da jobbet hos [[Netscape Communications Corporation|Netscape]]. Det første kodenavnet på det nye språket var ''Mocha'', etter det var språket en liten periode kjent som ''LiveScript'', før det kjapt fikk navnet ''JavaScript''. Dette navnet spiller på programmeringsspråket [[Java (programmeringsspråk)|Java]], men er på mange måter forvirrende, siden Java og JavaScript har lite annet enn en overfladisk likhet i syntaks til felles. JavaScript har derimot mer til felles med de eldre programmeringsspråkene [[Self (programmeringsspråk)|Self]] og [[Scheme]], og Eich brukte programmeringsparadigmer fra disse da han designet JavaScript.<ref name="begynnelsen" /> Det var imidlertid et krav fra ledelsen i selskapet at det nye språket skulle «se ut som Java», og Eich fulgte opp dette på tross av at «hovedingrediensene» i det nye språket var hentet fra Self og Scheme.<ref name="se ut" /> Netscape sendte språket til [[Ecma International]] for standardisering i november 1996, og den første offisielle spesifikasjonen var kjent som ''ECMA-26''. Denne var for alle praktiske formål det samme som datidens JavaScript. Senere har det blitt slik at den offisielle standarden – kjent som [[ECMAScript]] – definerer selve språket, mens JavaScript er en ''implementasjon'' av ECMAScript. Forskjellen er likevel mest akademisk, og i dagligtalen brukes de to begrepene om hverandre.<ref name="begynnelsen" /> === Interaktive nettsider igjennom Ajax === [[Microsoft]] kom i 2000 med [[Ajax (programmering)|Ajax]]-teknologi i sin [[Internet Explorer]], og i tiden som fulgte fikk alle andre nettlesere støtte for dette. I løpet av få år ble JavaScript modent nok til å lage dynamiske og fullstendige webapplikasjoner, der [[Gmail]] i 2004 ble det store gjennombruddet. Tidligere var det nødvendig å sende hele nettsiden frem og tilbake mellom nettleseren og serveren slik at alle data måtte lastes på nytt for hver endring, men den type nettsteder som ble popularisert igjennom Gmail og basert på Ajax-arkitekturen kunne klare seg med å bare sende deler av nettsiden mellom klienten og serveren når noe endret seg. Slike nettsteder ble kjent som «enkeltside-applikasjoner» (engelsk ''single-page applications''), og kom for alltid til å forandre hvordan dynamiske nettapplikasjoner ble utviklet.<ref name="ajax-revolusjonen" /> === Popularisering av rammeverk til server- og klientbruk === «JavaScript-revolusjonen» som var blitt satt i gang med Ajax hadde ført til at de ulike nettleserne stadig fikk bedre JavaScript-motorer. Spesielt var [[Google V8|V8-motoren]] til [[Google Chrome]] rask, og i 2009 tilpasset programmereren Ryan Dahl denne slik at den også kunne brukes på servere. Dette ble startskuddet til [[Node.js]], som populariserte serverbruk av JavaScript til [[I/O|I/O-intensive]] applikasjoner.<ref name="node" /> Den stadig økende kompleksiteten rundt det å bygge større webapplikasjoner gjorde at altomfattende JavaScript-rammeverk også på klientsiden økte i popularitet disse årene. [[jQuery]] var et tidlig bibliotek for å forenkle endringer i den såkalte [[Document Object Model|DOMen]], men denne hjalp ikke programmereren med å strukturere en større kodebase.<ref name="jQuery" /> I 2009 kom Miško Hevery og Adam Abrons med den første utgaven av rammeverket som senere ble kjent som [[AngularJS]], og dette rammeverket har fått stor utbredelse etter at det ble støttet av Google fra 2010.<ref name="angular" /> [[React]] – først lansert av [[Facebook]] i 2011 – har også vokst veldig de senere årene, og har sørget for å popularisere en arkitektur der hele brukergrensesnittet defineres i gjenbrukbare JavaScript-komponenter.<ref name="react" /> === Moderne ECMAScript-utgaver === Pr. mars 2017 finnes det sju utgaver av ECMAScript, med ECMAScript 2016 som den nyeste. De siste gjennomgripende JavaScript-endringene kom i juni 2015, med ECMAScript-standarden kjent som ES6.<ref name="es6-gjennomgripende" /> Det tar imidlertid tid for nettleser-leverandører å implementere støtte for de seneste versjonene, og ES6 og ECMAScript 2016 er dermed i liten grad tatt i bruk for web-formål. Det er femteutgaven ES5 (publisert i juni 2011) som fortsatt fungerer som et slags ''[[lingua franca]]'' på webben.<ref name="begynnelsen" /> == Variabler == JavaScript er dynamisk typet, som vil si at datatypen ikke oppgis under deklarering av en variabel (slik som C eller Java). Datatypen ligger implisitt i verdien som variabelen får. <syntaxhighlight lang="javascript"> let x = 23; // tilordner heltallet 23 til x. console.log(x); // skriver ut 23 x = "Hei verden!"; // tilordner ny verdi : Hei verden! med datatypen tekststreng. console.log(x) // skriver ut: Hei verden! </syntaxhighlight> == Referanser == <references> <ref name="begynnelsen">[[#Brown2016|Brown (2016)]], kapittelet «A Brief History of JavaScript».</ref> <ref name="se ut">{{Kilde www |url = http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html |tittel = Popularity |besøksdato = 2017-03-20 |utgiver = mozillazine.org |forfatter = Eich, Brendan |dato = 2008-04-03 |arkiv_url =https://web.archive.org/web/20090324144954/http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html |arkivdato = 2009-03-24 }}</ref> <ref name="ajax-revolusjonen">[[#Elliott2014|Elliott (2014)]], kapittelet «The JavaScript Revolution».</ref> <ref name="es6-gjennomgripende">[[#Brown2016|Brown (2016)]], kapittelet «ES6».</ref> <ref name="node">[[#Wandschneider2016|Wandschneider (2016)]], kapittelet «Introduction».</ref> <ref name="jQuery">[[#Grant2014|Grant (2014)]], kapittelet «The Basics of AngularJS».</ref> <ref name="angular">[[#Haviv2016|Haviv et al. (2016)]], kapittelet «Getting Started with AngularJS».</ref> <ref name="react">[[#Chinnathambi2016|Chinnathambi (2016)]], kapittelet «Introducing React».</ref> </references> == Litteratur == * {{Kilde bok | ref = Brown2016 | forfatter= Brown, Ethan | utgivelsesår= 2016 | tittel= Learning JavaScript | utgave=3 | forlag= O'Reilly Media | isbn=9781491914915 }} * {{Kilde bok | ref = Chinnathambi2016 | forfatter= Chinnathambi, Kirupa | utgivelsesår= 2016 | tittel= Learning React | forlag= Addison-Wesley | isbn=9780134546513 }} * {{Kilde bok | ref = Elliott2014 | forfatter= Elliott, Eric | utgivelsesår= 2014 | tittel= Programming JavaScript Applications | forlag= O'Reilly Media | isbn=9781491950296 }} * {{Kilde bok | ref = Grant2014 | forfatter= Grant, Andrew | utgivelsesår= 2014 | tittel= Beginning AngularJS | forlag= Apress | isbn=9781484201602 }} * {{Kilde bok | ref = Haviv2016 | forfatter=Haviv, Amos Q.; Frisbie, Matt; Chandermani og Branas, Rodrigo | utgivelsesår= 2014 | tittel= AngularJS: Maintaining Web Applications | forlag= Packt | isbn=9781786465788 }} * {{Kilde bok | ref = Wandschneider2016 | forfatter= Wandschneider, Marc | utgivelsesår= 2016 | utgave=2 | tittel= Learning Node.js | forlag= Addison-Wesley Professional | isbn=9780134663715 }} == Eksterne lenker == * [http://www.ecma-international.org/publications/standards/Ecma-262.htm ECMA-262] (ECMAScript Language Specification) * [http://www.w3schools.com/js/default.asp W3 Schools' JavaScript tutorial] {{programmeringsspråk}} {{Autoritetsdata}} [[Kategori:JavaScript| ]] [[Kategori:Programmeringsspråk]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Bilde fra Wikidata
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks bilde
(
rediger
)
Mal:Infoboks dobbeltrad
(
rediger
)
Mal:Infoboks overskrift
(
rediger
)
Mal:Infoboks programmeringsspråk
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Kilde bok
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Programmeringsspråk
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:String
(
rediger
)
Modul:Wikidata2
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataDato
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon