Hoppa till innehåll

Stödjande inspelningar

Kurslitteraturen är en av de delar som driver kursen framåt, men det kan vara svårt att själv strukturera upp innehållet. Vad är relevant? Vad bör du fokusera på i kursen? De stödjande inspelningarna tas fram av kursledningen för att just ge detta sammanhang. Det är av yttersta vikt att du tar del av dessa!

Nu är det dags att titta på vad som döljer sig bakom uttryck så som typer, värden, uttryck och satser.

Presentation

Reviderad

Variabler och konstanter är några av de absolut viktigaste byggstenarna i programmering. Hur skapar du dessa och vad ska du tänka på när det kommer till namngivning?

Presentation

Reviderad

En variabel låter ett program komma ihåg ett värde genom att binda ett namn till det, och deklareras med nyckelordet let följt av namnet. let är standarden sedan ES6 (2015) — före det användes var, som ersattes eftersom det tillät variabler att läcka ut ur block, omdeklareras utan varning och läsas innan de deklarerats. Ges ingen initiering får variabeln automatiskt värdet undefined, annars kan värdet användas direkt i uttryck och ändras i efterhand.

Namngivning bör vara beskrivande och på engelska. Namn som består av flera ord skrivs med camelCasing (varje ord utom det första inleds med versal). Rekommenderade tecken är a–z, A–Z, 0–9, _ och $, men namnet får inte inledas med en siffra och får inte vara ett nyckelord eller reserverat ord (let, const, class, return med flera) — det ger annars ett syntaxfel.

En konstant fungerar som en variabel med två skillnader: den måste ges ett värde redan när den deklareras, med nyckelordet const, och det värdet kan sedan inte ändras — ett försök kastar ett TypeError. Namngivningen skiljer sig åt beroende på värdets ursprung: när värdet redan är känt när koden skrivs används SCREAMING_SNAKE_CASE (MY_FAVORITE_NUMBER), medan camelCase används när värdet istället tilldelas dynamiskt vid körning.

För att kunna dela upp din kod i mindre, logiska stycken så behöver du använda funktioner. Men hur fungerar detta?

Presentation

Reviderad

Redan när ett JavaScript-program startar finns inbyggda funktioner tillgängliga, som console.log och Math.min. Det finns dock inte inbyggda funktioner för allt, så förr eller senare måste du skriva egna. Att dela upp ett program i funktioner strukturerar koden, ger överblick och undviker att identisk kod upprepas — bryt aldrig mot principen DRY (Don’t Repeat Yourself).

En funktion anropas genom att skriva dess namn följt av parenteser, som alltid krävs oavsett om det finns argument eller inte. Argument är värdena som skickas med vid anropet. En funktion returnerar alltid ett värde — saknas en return-sats returneras undefined.

Det finns tre sätt att skapa en funktion. En funktionsdeklaration består av nyckelordet function, ett namn, en parameterlista och en kropp inom klammerparenteser. Ett funktionsuttryck tilldelar istället en funktion till en variabel eller konstant (använd const för att undvika att den skrivs över), och behöver inget eget namn. Sedan ES6 (2015) kan funktioner också skapas med arrow function-syntax (=>) — innehåller kroppen bara en sats kan klammerparenteser och return uteslutas, men saknar funktionen parametrar måste tomma parenteser ändå anges. Alla tre sätten beter sig likadant vad gäller anrop, argument, parametrar och returvärden.

Variabler, konstanter och parametrar som skapas inuti en funktion är lokala i den — let och const ger block scope (bara tillgängligt inom klammerparenteserna), medan var ger function scope. En parameter kan tilldelas ett standardvärde som används om inget argument skickas med vid anropet.

Jättebra att du kan dela upp din kod i funktioner, men hur gör du om du vill dela upp din kod i flera filer?

Presentation

Reviderad

När ett program växer och all kod ligger i en enda fil ökar risken för att den tappar struktur och blir svår att förändra. Genom att dela upp koden i flera filer, moduler, undviks det problemet — en modul är ett litet delprogram som kan ange vilka andra moduler den beror av, och framför allt vilken funktionalitet den erbjuder andra att använda.

Sedan ECMAScript 6 (2015) har JavaScript inbyggt stöd för moduler, så kallade ECMAScript-moduler (ES-moduler, ESM). En modul exporterar värden med nyckelordet export, och en annan modul laddar den med import — antingen som en namnrymdsimport (import * as x, importerar allt exporterat) eller en namngiven import (import { x }, importerar bara det angivna). Bara det som faktiskt exporterats kan anropas utifrån modulen.

Innan ESM var CommonJS ett av de populära modulsystemen, och används fortfarande mycket inom Node.js eftersom stödet för ESM där länge var experimentellt. CommonJS använder module.exports och require istället för export och import, men räknas idag som utdaterat till förmån för ESM. Node.js behandlar kod som CommonJS som standard — för att istället använda ES-moduler läggs fältet type med värdet "module" till i package.json, enklast skapad med npm init -y och sedan kompletterad.

npm-registret innehåller paket, och ett paket kan i sin tur innehålla flera moduler. Vilka paket en applikation använder beskrivs i package.json under dependencies och devDependencies. Paket installeras med npm install PAKETETS_NAMN och hamnar i katalogen node_modules — saknas den katalogen kan alla beroenden installeras i ett svep med npm install utan argument.

En presentation som går igenom de tre kontrollstrukturerna sekvens, selektion och iteration men tre separata videor.

Presentation

Reviderad

Vad är egentligen en sekvens? Kursledningen repeterar även debuggern i denna inspelning.

Att göra val i koden är en verklig hörnsten inom programmering. Selektioner är bara ett finare ord för val.

Inte sällan behöver samma sak göras flera gånger, alltså upprepas. Det händer alltså att du i din kod behöver upprepa dig för att vara extra tydlig!

Att kommentera din kod på ett strukturerat sätt är viktigt. Kursledningen ger en inledning till detta här. Missa inte guiden kring JSDoc-kommentarer.

Presentation

Reviderad

Kursledningen inleder till viss del med repetition för att förstärka delar som rör funktioner och moduler.

Exempelkoden hittar du på GitLab.

Reviderad

1:33:48

Att kunna organisera större dataset i listor, arrayer, är mycket kraftfullt. En lång föreläsning på ämnet ligger till grund för dessa delar.

Presentation

Reviderad

1:32:56 · Presentation (kopplad till inspelningen)

Redan nu smygs en kort introduktion till undantag in.

Presentation

Reviderad

Objekt är något oerhört centralt i JavaScript och i all objektbaserad programmering. Denna inspelning introducerar objekt ur dess allra renaste form.

Presentation

Reviderad

Ett moment som många har svårt med i examinationsuppgift A2 är funktionen “mode”. För att underlätta löses här ett exempel som löser samma grundläggande problem.

Exempelkoden hittar du på GitLab.

Reviderad

1:08:42

I JavaScript finns inte bara ett sätt att skapa ett objekt. Från enkel objektliteral till klass – flera vägar leder fram.

Presentation

Reviderad

Ska alla egenskaper på ett instansierat objekt alltid vara tillgängliga utanför klassen?

Presentation

Reviderad

Återanvändning av kod kan ske på många olika sätt. Här behandlas mekanismen “Arv”.

Presentation

Reviderad

Att validera exempelvis strängar, kontrollera att de är skrivna på ett visst format, är mycket vanligt. Denna inspelning tittar på reguljära uttryck och ser om de kan hjälpa (eller stjälpa?) dig.

Presentation

Reviderad

CCBY