# 📦 Prov i JS programmeirng
```
date: 2025-10-22
```

# Del I
*Max 1 poäng per uppgift. Du ska svara med värdet av utrycket nedan.Svaret ska vara exakt, men viss acceptans för felstavningar.*

1. "1"+"1"
2. true && !false 
3. typeof Infinity
4. 0.2+0.1 === 0.3
5. "Hello"[2]
6. [2022, 10, 22].join("-")
7. Symbol("hello") === Symbol("hello")
8. let a=[1,2,3,4,5,6]; a[0]+a[3]

```js
let o = { "A": 1, "B": 2, "C": 3, "D": 4 };
let a = [1, 2, 3, [4, 5], 6];
```

Vi utgår från att koden ovan har körts innan uppgifterna nedan.

9. o.C
10. Object.keys(o)
11. a[2]+a[3][1]
12. a.length
13. function constructor() {this.a=10; this.o={};this.o.a=1}; let o = new constructor(); o.a;
14. let f = (x)=>3*x+1; f(3);

## Del II
*Max 3 poäng per uppgift. Svara med både resultat och motivering.*

1. Förklara koden.

```js
let product = 2;

function Mult(factor = 1) {
  product = product * factor;
  return product;
}
```

Vad kommer att returneras från funktions anropen "Mult(3);Mult(3)" om de anropas
direkt efter koden ovan? Svara med resultat från båda anropen och förklara
varför det blir så. Om det blir ett error förklara vilken typ av error och
varför.

2. Promise

Förklara med egna ord varför vi använder promise i js. Vad är det med språket
som gör det så bekvämt att använda promise?

# Del III
*Max 4 poäng.*

Vi kan programmera funktionellt i JS genom att använda oss av dessa tre
funktioner som alla tar en funktion och tillämpar den på varje element.

- **filter** Om funktionen returnerar sant så får den vara kvar i listan.
- **map** Med värderna från funktionen skapas en ny lista.
- **reduce** Tar två parametrar, det som returneras li8gger sopm grund till
  nästa.

```js
let sum = [
  { type: "data", count: 1 },
  { type: "noise", count: 3 },
  { type: "data", count: 2 },
  { type: "data", count: 5 },
  { type: "noise", count: 1 },
  { type: "noise", count: 3 },
  { type: "noise", count: 4 },
  { type: "data", count: 5 },
]
  .filter((x) => x.type === "data")
  .map((x) => Number(x.count) + 1)
  .reduce((s, x) => s + x);
console.log(sum);
```

## För att få ett poäng krävs

- Ge en kort genomgång av vad koden gör.

## För att få full poäng krävs

- Ge rätt resultat.
- Göra en stegvis förklaring till vad som händer.
- Din förklaring är tydligt och lätt att följa.

** 🍀 Lycka Till! 🍀 **

** /krm **
