Hoppa till innehåll

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!

Skriv en sats, tänkt till filen app.js, som skriver ut resultatet av uttrycket 27 + 15 i ett terminalfönster.

app.js
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.

app.js
let sum = 27 + 15
console.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.

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.

js // app.js let value1 = 27 let value2 = 15 let sum = value1 + value2 console.log(sum)

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.

app.js
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.

algebraic.js
export function add(param1, param2) {
let sum = param1 + param2
return sum
}
app.js
import { add } from './algebraic.js'
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)

👉 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.

Terminal window
challenges/week2-0> node app.js
42
67

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.
Terminal window
> mkdir challenges
> cd challenges
challenges> mkdir week2-0

Byt 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.

Terminal window
challenges> cd week2-0
challenges/week2-0> code app.js

Efter 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.

Terminal window
challenges/week2-0> node app.js
42
Terminal window
challenges/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:1
import { 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.

Terminal window
challenges/week2-0> node app.js
42
67

2.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.

increment(7) -> 8
increment(-3) -> -2
increment(42) -> 43
  • Glöm inte att returnera resultatet.
function increment(value) {
let result = value + 1
return result
}
function increment(value) {
value++
return value
}

Den mest “seniora” lösningen? Ingen extra variabel skapas. Ingen variabel (parameter) vars värde ändras.

function increment(value) {
return value + 1
}

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.

Skapa en funktion som tar två tal som argument och returnerar deras summa.

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.
function add(value1, value2) {
let sum = value1 + value2
return sum
}
function add(value1, value2) {
return value1 + value2
}

Skriv en funktion tar ett heltal minuter som argument, konverterar det till sekunder och returnerar det värdet.

convertToSeconds(2) -> 120
convertToSeconds(0) -> 0
convertToSeconds(4) -> 240
  • Du uttrycker en multiplikation med operatorn *.
  • Glöm inte att returnera resultatet.
function convertToSeconds(minutes) {
return 60 * minutes
}
const convertToSeconds = function (minutes) {
return 60 * minutes
}
const convertToSeconds = (minutes) => 60 * minutes
CCBY