Utmaningar
2.0 Från enkel utskrift till modul med exporterad funktion
Section titled “2.0 Från enkel utskrift till modul med exporterad funktion”En “steg-för-steg”-utmaning där stegen är små, ännu mindre, nästan osynliga och stora.
👉 OBS! Lös detta med enbart papper och penna utan att blanda in något tangentbord!
2.0.1 Utskrift av uttrycks resultat
Section titled “2.0.1 Utskrift av uttrycks resultat”Skriv en sats, tänkt till filen app.js, som skriver ut resultatet av uttrycket 27 + 15 i ett
terminalfönster.
Lösningsförslag
Section titled “Lösningsförslag”console.log(27 + 15)console.log() används för att skriva ut i terminalen. Det är värdet av uttrycket som skrivs mellan
parenteserna som skrivs ut.
2.0.2 Spara ett uttrycks resultat i en variabel
Section titled “2.0.2 Spara ett uttrycks resultat i en variabel”Återvänd till modifiera den tidigare satsen så att resultatet av uttrycket 27 + 15 lagras i
variabeln sum vars värde sedan skrivs ut.
Lösningsförslag
Section titled “Lösningsförslag”let sum = 27 + 15console.log(sum)Här används let för att deklarera variabeln sum. Eftersom värdet sum aldrig ändras hade det i
detta fall gått lika bra, och enligt många bättre, att deklarera en konstant istället för en
variabel, const sum = 27 + 15.
2.0.3 Spara värden i variabler
Section titled “2.0.3 Spara värden i variabler”Modifiera tidigare satser så att värdena i uttrycket 27 + 15 lagras i variablerna value1 och
value2. Använd därefter variablerna i uttrycket som bestämmer värdet som sum tilldelas.
Lösningsförslag
Section titled “Lösningsförslag”js // app.js let value1 = 27 let value2 = 15 let sum = value1 + value2 console.log(sum)
2.0.4 Generalisera med en funktion
Section titled “2.0.4 Generalisera med en funktion”Skapa funktionen add som ska addera två värden som skickas till den som argument. Den beräknade
summan ska sedan returneras. Ersätt därefter uttrycket som adderar variablernas värden med ett anrop
av funktionen.
Lägg till satser som tilldelar variablerna nya värden, 12 respektive 55, anropar funktionen
add och presenterar det nya resultatet.
Lösningsförslag
Section titled “Lösningsförslag”function add(param1, param2) { let sum = param1 + param2 return sum}
let value1 = 27 let value2 = 15 let sum = add(value1, value2) console.log(sum)
value1 = 12 value2 = 55 sum = add(value1, value2) console.log(sum)2.0.5 “ECMAScript-modularisera” funktionen 🤔
Section titled “2.0.5 “ECMAScript-modularisera” funktionen 🤔”Flytta funktionen add, från den tänkta filen app.js till den tänkta filen
algebraic.js. Var noga med att se till att app.js fortsatt kan anropa
funktionen add trots att den befinner sig i en annan modul.
Paketlösning.
Lösningsförslag
Section titled “Lösningsförslag”export function add(param1, param2) { let sum = param1 + param2 return sum}import { add } from './algebraic.js'
let value1 = 27let value2 = 15let sum = add(value1, value2)console.log(sum)
value1 = 12value2 = 55sum = add(value1, value2)console.log(sum)2.0.6 Din första Node-applikation(?)
Section titled “2.0.6 Din första Node-applikation(?)”👉 OBS! Lös detta med enbart papper och penna utan att blanda in något tangentbord! Använd din
dator!
Skapa och kör applikationen samt verifiera att värden 42 och 67 skrivs ut i terminalfönstret.
challenges/week2-0> node app.js4267Lösningsförslag
Section titled “Lösningsförslag”Du skapar en ny katalog med mkdir och du byter till en katalog med cd.
mkdir, “make directory”, används för att skapa en ny katalog (bibliotek/folder).cd, “change directory”, används för att byta aktiv katalog. Skapa katalogstrukturen med kommandona nedan.
> mkdir challenges> cd challengeschallenges> mkdir week2-0Byt till katalogen week2-0, skapa och öppna filen app.js genom att i terminalen skriva
code app.js som startar Visual Studio Code, skapar och öppnar app.js i den aktuella katalogen.
challenges> cd week2-0challenges/week2-0> code app.jsEfter att du sparat filen exekverar du kod i en JavaScript-fil med kommandot node följt av namnet
på filen vars kod du vill exekvera. Om filen du vill exekvera heter app.js skriver du
node app.js på kommandoraden i terminalen.
challenges/week2-0> node app.js42challenges/week2-0> node app.js(node:2001) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.(Use `node --trace-warnings ...` to show where the warning was created)/home/mats/challenges/week2-0/app.js:1import { add } from './algebraic.js'^^^^^^SyntaxError: Cannot use import statement outside a module...Skapa filen package.json med npm init -y, och lägg till "type": "module".
{ "name": "week2-0", "version": "1.0.0", "description": "", "type": "module", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC"}Kör applikationen med node app.js och verifiera att rätt värden skrivs ut.
challenges/week2-0> node app.js42672.1 Returnera ett heltals värde ökat med 1
Section titled “2.1 Returnera ett heltals värde ökat med 1”Skapa en funktion som tar ett heltal som argument, ökar heltalet med 1 och returnerar resultatet.
Exempel
Section titled “Exempel”increment(7) -> 8
increment(-3) -> -2
increment(42) -> 43- Glöm inte att returnera resultatet.
Lösningsförslag
Section titled “Lösningsförslag”Alternativ 1
Section titled “Alternativ 1”function increment(value) { let result = value + 1 return result}Alternativ 2
Section titled “Alternativ 2”function increment(value) { value++ return value}Alternativ 3 👍
Section titled “Alternativ 3 👍”Den mest “seniora” lösningen? Ingen extra variabel skapas. Ingen variabel (parameter) vars värde ändras.
function increment(value) { return value + 1}Alternativ 4 👎
Section titled “Alternativ 4 👎”En mindre bra lösning då den är svårare att förstå.
function increment(value) { return ++value}Värdet parametern value har ökas med 1 innan värdet returneras. Varför? Eftersom operatorn ++
står innan value ökas värdet först, sedan returneras det. Hade det stått value++ hade värdet
“först” returnerats för att därefter ökas med 1.
2.2 Returnera summan av två tal
Section titled “2.2 Returnera summan av två tal”Skapa en funktion som tar två tal som argument och returnerar deras summa.
Exempel
Section titled “Exempel”add(3, 2) -> 5
add(-3, -6) -> -9
add(7, 3) -> 10- Du uttrycker en addition på samma sätt som du är van vid från matematiken.
- Glöm inte att returnera summan.
Lösningsförslag
Section titled “Lösningsförslag”Alternativ 1
Section titled “Alternativ 1”function add(value1, value2) { let sum = value1 + value2 return sum}Alternativ 2 👍
Section titled “Alternativ 2 👍”function add(value1, value2) { return value1 + value2}2.3 Konvertera minuter till sekunder
Section titled “2.3 Konvertera minuter till sekunder”Skriv en funktion tar ett heltal minuter som argument, konverterar det till sekunder och returnerar det värdet.
Exempel
Section titled “Exempel”convertToSeconds(2) -> 120
convertToSeconds(0) -> 0
convertToSeconds(4) -> 240- Du uttrycker en multiplikation med operatorn
*. - Glöm inte att returnera resultatet.
Lösningsförslag
Section titled “Lösningsförslag”Alternativ 1
Section titled “Alternativ 1”function convertToSeconds(minutes) { return 60 * minutes}Alternativ 2
Section titled “Alternativ 2”const convertToSeconds = function (minutes) { return 60 * minutes}Alternativ 3
Section titled “Alternativ 3”const convertToSeconds = (minutes) => 60 * minutes