# 🔄 Repetition av JS

** 🕰️ 2021-11-18 **

## Del I

_Du behöver inte svara med en hel mening_

1. typeof NaN
1. number
1. string
1. boolean
1. symbols
1. object
1. l=["a","b","c"]; l.push("d");l
   1. ["a","b","c", "d"];
   2. ["a","b","c"];
   3. ["d", "a","b","c"];
   4. ["a","b"];
   5. ["b","c"];
1. Se program 1 nedan. Vad blir data["abba"]["id"]?
1. Vad kommer "Programmet 2", kommer skriva ut?
1. hej hej hej
1. hej hej hej hej
1. hej hej hej hej hej hej
1. hej hej hej hej hej hej hej hej
1. hej hej hej hej hej hej hej hej hej
1. Se Program 3 nedan. Vad blir: Boo.call(A);
1. Se Program 4 nedan. Efter hur lång tid kommer point ha värdet 100?
1. 100 ms
1. 1 s
1. 10 s
1. 20 s
1. ca 1 h
1. typeof {}

## Del II

1. Titta på Programmet 5 nedan. Hitta minst två olika fel samt beskriv dem.
2. Förklara med egna ord vad asyncron programmering innebär. Du kan om du vill
   använda exempel på asycnron programmering istället för att skriva en
   förklaring.

### Del III

Skriv ettt program som läser tre olika filer som innehåller ett tal. Addera
dessa tal och skriv ut summan. Du ska importera packet "fs-extra", se koden
nedan. använd promise för att se till att vi inte får några onödiga väntetider i
programmet. Filerna som ska läsas in hetter "A.txt", "B.txt" och "C.txt" och
finns i samma mapp som programmet körws ifrån. Du kan använda inläsningkommandot
nedan som returnerar ett promise.

```js
import fs from "fs-extra";
```

```js
fs.readFileSync(SÖKVÄG_TILL_FIL, "utf8");
```

**Lycka Till! /krm **

---

# Program 1

```js
const data = {
  "abba": {
    "namn": "ABBA",
    "id": "A",
    "title": "Produkt från Abba.",
    "documentation": {
      "hello": "hej",
      "id": "B",
    },
  },
  "baab": "id",
};
```

# Program 2

```js
"use strict";

function tri(x) {
  return x + " " + x + " " + x;
}

console.log(tri(tri("hej")));
```

# Program 3

```js
const A = {
   a: 1,
   b:2,
   c:3,
   d:4
}

function Boo {
      return this.a+this.b+this.c;
}
```

# Program 4

```js
let point = 0;

function countCallback() {
  point = point + 2;
  document.getElementById("titel").innerHTML = point;
  window.setTimeout(countCallback, 200);
}
```

# Program 5

```js
      "strict mode";
            let points = 0;
            let total = 5;

            for(let i =0 i < total; i++) {
      	      const tal1 = Math.floor(Math.random()*10)
      	      const tal2 = Math.floor(Math.random()*10)
      	      const question = tal1+"+"+tal2+"=";
      	      const answer = tal1+tal2;
                const tal = Number(prompt(question));

                if(tal = answer) {
      		      console.log("Right");
      		      points++;
      		      document.getElementById('result').innerHTML += "<li>✅ " + question + answer + "</li>";
      		      document.getElementById('points').innerHTML = "Poäng: "+points+"/"+(i+1);
      	      }
      	      else {
      		      console.log("Wrong");
      		      document.getElementById('result').innerHTML += "<li>❌  " + question + answer + " <i> > "+tal+"</i></li>";
      		      document.getElementById('points').innerHTML = "Poäng: "+points+"/"+(i+1);
      	      }
           }
           if(points/total === 1) {
      	      document.getElementById('reaction').innerHTML = "🤩";
           }
           else if(points/total > 0.8) {
      	     document.getElementById('reaction').innerHTML = "😁";
           }
           else {
      	     document.getElementById('reaction').innerHTML = "😭";
           }
```
