diff --git a/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md b/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md index 51f1d4680..f105204bc 100644 --- a/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md +++ b/1-js/02-first-steps/10-ifelse/1-if-zero-string/solution.md @@ -1,12 +1,11 @@ -**Yes, it will.** +**Ja det vil den..** -Any string except an empty one (and `"0"` is not empty) becomes `true` in the logical context. +Husk at alle tekster (utenom en tom en `""`) vil bli lest som `true`. -We can run and check: +Vi kan kjøre koden og teste: ```js run if ("0") { - alert( 'Hello' ); + alert("Hello"); } ``` - diff --git a/1-js/02-first-steps/10-ifelse/1-if-zero-string/task.md b/1-js/02-first-steps/10-ifelse/1-if-zero-string/task.md index 5f16cda85..5a7635691 100644 --- a/1-js/02-first-steps/10-ifelse/1-if-zero-string/task.md +++ b/1-js/02-first-steps/10-ifelse/1-if-zero-string/task.md @@ -1,14 +1,13 @@ -importance: 5 +viktighet: 5 --- -# if (a string with zero) +# if (setning med 0) -Will `alert` be shown? +Vil `alert` bli vist? ```js if ("0") { - alert( 'Hello' ); + alert("Hello"); } ``` - diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html index ea9966653..956cf16ae 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/ifelse_task2/index.html @@ -1,20 +1,16 @@ + + - - - + let value = prompt('What is the "official" name of JavaScript?', ""); + if (value == "ECMAScript") { + alert("Right!"); + } else { + alert("You don't know? ECMAScript!"); + } + + diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md index 1d1a3f33d..418ef4a6d 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md @@ -1,14 +1,13 @@ -importance: 2 +viktighet: 2 --- -# The name of JavaScript +# JavaScript sitt navn -Using the `if..else` construct, write the code which asks: 'What is the "official" name of JavaScript?' +Ved å bruke `if..else` skal du skrive kode som spør: 'Hva er det "offisielle" navnet til JavaScript' -If the visitor enters "ECMAScript", then output "Right!", otherwise -- output: "Didn't know? ECMAScript!" +Hvis brukeren skriver inn "ECMAScript", skal tilbakemeldingen være "Korrekt!". Ellers skal den være: "Visste du det ikke? ECMAScript!" ![](ifelse_task2.svg) [demo src="ifelse_task2"] - diff --git a/1-js/02-first-steps/10-ifelse/3-sign/if_sign/index.html b/1-js/02-first-steps/10-ifelse/3-sign/if_sign/index.html index f168360dd..f8e357212 100644 --- a/1-js/02-first-steps/10-ifelse/3-sign/if_sign/index.html +++ b/1-js/02-first-steps/10-ifelse/3-sign/if_sign/index.html @@ -1,22 +1,18 @@ + + - - + let value = prompt("Type a number", 0); + if (value > 0) { + alert(1); + } else if (value < 0) { + alert(-1); + } else { + alert(0); + } + + diff --git a/1-js/02-first-steps/10-ifelse/3-sign/solution.md b/1-js/02-first-steps/10-ifelse/3-sign/solution.md index 262a605c2..068235b12 100644 --- a/1-js/02-first-steps/10-ifelse/3-sign/solution.md +++ b/1-js/02-first-steps/10-ifelse/3-sign/solution.md @@ -1,14 +1,11 @@ - - ```js run -let value = prompt('Type a number', 0); +let value = prompt("Type a number", 0); if (value > 0) { - alert( 1 ); + alert(1); } else if (value < 0) { - alert( -1 ); + alert(-1); } else { - alert( 0 ); + alert(0); } ``` - diff --git a/1-js/02-first-steps/10-ifelse/3-sign/task.md b/1-js/02-first-steps/10-ifelse/3-sign/task.md index 0c5d0e008..c39184cab 100644 --- a/1-js/02-first-steps/10-ifelse/3-sign/task.md +++ b/1-js/02-first-steps/10-ifelse/3-sign/task.md @@ -1,15 +1,15 @@ -importance: 2 +viktighet: 2 --- -# Show the sign +# Vis en verdi -Using `if..else`, write the code which gets a number via `prompt` and then shows in `alert`: +Ved å bruke `if..else` skal du skrive kode som tar inn et tall via `prompt` og viser dette i `alert`: -- `1`, if the value is greater than zero, -- `-1`, if less than zero, -- `0`, if equals zero. +- `1`, hvis verdien er mer enn null, +- `-1`, hvis verdien er mindre enn null, +- `0`, hvis verdien er null. -In this task we assume that the input is always a number. +I denne oppgaven antar vi at input vil alltid være et tall. [demo src="if_sign"] diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md index 638ce81f1..6b8d9bd67 100644 --- a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md +++ b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md @@ -1,6 +1,3 @@ - - ```js -result = (a + b < 4) ? 'Below' : 'Over'; +result = a + b < 4 ? "Below" : "Over"; ``` - diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md index 684e239f2..421c7110f 100644 --- a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md +++ b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md @@ -2,15 +2,14 @@ importance: 5 --- -# Rewrite 'if' into '?' +# Gjør om 'if' til '?' -Rewrite this `if` using the ternary operator `'?'`: +Gjør om denne `if` påstanden ved bruk av ternary operatøren`'?'`: ```js if (a + b < 4) { - result = 'Below'; + result = "Below"; } else { - result = 'Over'; + result = "Over"; } ``` - diff --git a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md b/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md index 6d68e29d7..ee8b1a8a2 100644 --- a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md +++ b/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/solution.md @@ -1,9 +1,10 @@ - - ```js -let message = (login == 'Employee') ? 'Hello' : - (login == 'Director') ? 'Greetings' : - (login == '') ? 'No login' : - ''; +let message = + login == "Employee" + ? "Hello" + : login == "Director" + ? "Greetings" + : login == "" + ? "No login" + : ""; ``` - diff --git a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md b/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md index 4f7d994a2..a17ca4cb2 100644 --- a/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md +++ b/1-js/02-first-steps/10-ifelse/6-rewrite-if-else-question/task.md @@ -2,22 +2,22 @@ importance: 5 --- -# Rewrite 'if..else' into '?' +# Gjør om 'if..else' til '?' -Rewrite `if..else` using multiple ternary operators `'?'`. +Gjør om `if..else` påstanden under ved bruk av spørsmålstegn `'?'`. -For readability, it's recommended to split the code into multiple lines. +Det er anbefalt å dele opp koden inn i flere linjer for bedre lesbarhet. ```js let message; -if (login == 'Employee') { - message = 'Hello'; -} else if (login == 'Director') { - message = 'Greetings'; -} else if (login == '') { - message = 'No login'; +if (login == "Employee") { + message = "Hello"; +} else if (login == "Director") { + message = "Greetings"; +} else if (login == "") { + message = "No login"; } else { - message = ''; + message = ""; } ``` diff --git a/1-js/02-first-steps/10-ifelse/article.md b/1-js/02-first-steps/10-ifelse/article.md index 1e12fa7b5..0b90d6364 100644 --- a/1-js/02-first-steps/10-ifelse/article.md +++ b/1-js/02-first-steps/10-ifelse/article.md @@ -1,14 +1,14 @@ -# Conditional operators: if, '?' +# Operant betinging: if, '?' -Sometimes, we need to perform different actions based on different conditions. +Ofte i koden vår ønsker vi å utføre forskjellige operasjoner basert på ulike betingelser. -To do that, we use the `if` statement and the conditional (ternary) operator which we will be referring to as the “question mark” operator `?` for simplicity. +For å bestemme hvilken kode som skal bli kjørt basert disse ulike betingelsene, bruker vi noe som kalles for "if" påstand (eng: if-statement). Man kan også benytte seg av en (ternary) operator, som vi vil skrive mer om etterpå. -## The "if" statement +## "if" påstand -The `if` statement evaluates a condition and, if the condition's result is `true`, executes a block of code. +Oppgaven til en `if` påstand er å evaluere en betingelse (condition). Om resultatet er sant (`true`) kjøres koden. -For example: +Eksempel: ```js run let year = prompt('In which year was ECMAScript-2015 specification published?', ''); @@ -18,29 +18,27 @@ if (year == 2015) alert( 'You are right!' ); */!* ``` -In the example above, the condition is a simple equality check (`year == 2015`), but it can be much more complex. - -If we want to execute more than one statement, we have to wrap our code block inside curly braces: +Ofte ønsker man å kjøre flere liner med kode om en betingelse er sann. For å gjøre dette pakker vi koden inn i krøllparantes (curly brackets) - `{}`. ```js if (year == 2015) { - alert( "That's correct!" ); - alert( "You're so smart!" ); + alert("That's correct!"); + alert("You're so smart!"); } ``` -We recommend wrapping your code block with curly braces `{}` every time you use an `if` statement, even if there is only one statement to execute. Doing so improves readability. +En god tommelfingerregel er å alltid pakke koden etter en "if" påstand inn i krøllparanteser. Dette gjør koden både mer konsekvent og lettere å lese. -## Boolean conversion +## Boolsk (boolean) "oversettelse" -The `if (…)` statement evaluates the expression in its parentheses and converts the result to a boolean. +Hver gang en `if (…)` påstand evaluerer betingelsen, gjør den koden inni om til en boolsk verdi. -Let's recall the conversion rules from the chapter : +La oss friske opp hukommelsen med true/false oversettelsene fra kapittelet : -- A number `0`, an empty string `""`, `null`, `undefined`, and `NaN` all become `false`. Because of that they are called "falsy" values. -- Other values become `true`, so they are called "truthy". +- Tallet `0`, en tom tekst `""`, `null`, `undefined`, og `NaN` blir alle omgjort til `false`. De kalles for "falsy" verdier. +- Alle andre verdier blir `true`, og kalles passende nok for "truthy" verdier. -So, the code under this condition would never execute: +Med denne kunnskapen, vet vi nå at koden under aldri vil bli kjørt: ```js if (0) { // 0 is falsy @@ -48,15 +46,15 @@ if (0) { // 0 is falsy } ``` -...and inside this condition -- it always will: +...mens denne koden alltid vil bli kjørt: ```js -if (1) { // 1 is truthy +if (0) { // 0 is falsy ... } ``` -We can also pass a pre-evaluated boolean value to `if`, like this: +Det er også lov å sette inn en allerede evaluert boolsk verdi inn i en `if` påstand: ```js let cond = (year == 2015); // equality evaluates to true or false @@ -66,48 +64,55 @@ if (cond) { } ``` -## The "else" clause +## Else "leddsetningen" + +Det hender at man ofte vil kjøre én spesifikk kode hvis betingelsen i "if" påstanden stemmer, og ellers en annen kode hvis den ikke stemmer. For å gjøre dette bruker man noe som kalles for en "else statement". Denne kjøres uansett hvis "if" påstanden er false. -The `if` statement may contain an optional "else" block. It executes when the condition is false. +Eksempel: -For example: ```js run -let year = prompt('In which year was the ECMAScript-2015 specification published?', ''); +let year = prompt( + "In which year was the ECMAScript-2015 specification published?", + "" +); if (year == 2015) { - alert( 'You guessed it right!' ); + alert("You guessed it right!"); } else { - alert( 'How can you be so wrong?' ); // any value except 2015 + alert("How can you be so wrong?"); // any value except 2015 } ``` -## Several conditions: "else if" +## Flere påstander: "else if" -Sometimes, we'd like to test several variants of a condition. The `else if` clause lets us do that. +Noen ganger ønsker man å teste flere betingelser. For å gjøre dette bruker vi `else if` påstander. -For example: +For eksempel: ```js run -let year = prompt('In which year was the ECMAScript-2015 specification published?', ''); +let year = prompt( + "In which year was the ECMAScript-2015 specification published?", + "" +); if (year < 2015) { - alert( 'Too early...' ); + alert("Too early..."); } else if (year > 2015) { - alert( 'Too late' ); + alert("Too late"); } else { - alert( 'Exactly!' ); + alert("Exactly!"); } ``` -In the code above, JavaScript first checks `year < 2015`. If that is falsy, it goes to the next condition `year > 2015`. If that is also falsy, it shows the last `alert`. +Fremgangsmåten til JavaScript er å først sjekke om `alder == 18)`. Hvis det er "falsy", sjekker den neste påstand som er `alder < 18`. Hvis denne viser seg også å være "falsy", kjører den koden som er i "else" påstanden. -There can be more `else if` blocks. The final `else` is optional. +Merk: Det kan være flere `else if` påstander, men bare en `else` påstand. -## Ternary operator '?' +## Ternary operatør '?' -Sometimes, we need to assign a variable depending on a condition. +Det hender at man ønsker å sette en variabel basert på en betingelse. -For instance: +For eksempel: ```js run no-beautify let accessAllowed; @@ -124,26 +129,27 @@ if (age > 18) { alert(accessAllowed); ``` -The so-called "ternary" or "question mark" operator lets us do that in a shorter and simpler way. +For å gjøre dette på en enklere måte, kan vi bruke noe som heter "ternary operator". Noen kaller denne også for "question mark operator". -The operator is represented by a question mark `?`. The formal term "ternary" means that the operator has three operands. It is actually the one and only operator in JavaScript which has that many. +Dettte er fordi denne operatøren brukes med et `?`-tegn. "Ternary" betyr at operatøren har tre "operander", som er tegnene som brukes i uttrykket. Denne er faktisk den eneste operatøren i JavaScript som har tre operander. + +Syntaksen er som følger: -The syntax is: ```js let result = condition ? value1 : value2; ``` -The `condition` is evaluated: if it's truthy then `value1` is returned, otherwise -- `value2`. +`Betingelsen` blir evaluert, og hvis den er "truthy" blir `verdi1`returnet, hvis ikke blir `verdi2` returnert. -For example: +For eksempel: ```js -let accessAllowed = (age > 18) ? true : false; +let accessAllowed = age > 18 ? true : false; ``` -Technically, we can omit the parentheses around `age > 18`. The question mark operator has a low precedence, so it executes after the comparison `>`. +Teknisk sett kan vi sette paranteser rundt `alder > 18`. Men spørsmålstegnet i en ternary operatør har en lav rang, og vil dermed bli kjørt etter `>`-sjekken. -This example will do the same thing as the previous one: +Dette eksemplet vil fungere likt som det forrige: ```js // the comparison operator "age > 18" executes first anyway @@ -151,10 +157,10 @@ This example will do the same thing as the previous one: let accessAllowed = age > 18 ? true : false; ``` -But parentheses make the code more readable, so we recommend using them. +Allikevel anbefales det å bruke paranteser selv om det ikke er nødvendig, ettersom det gjør koden lettere å lese. ````smart -In the example above, you can avoid using the question mark operator because the comparison itself returns `true/false`: +Merk: I eksempelet over hadde man egentlig ikke trengt å benytte seg av ternary operatøren, ettersom sjekken ville returnet `true/false` av seg selv. ```js // the same @@ -162,46 +168,51 @@ let accessAllowed = age > 18; ``` ```` -## Multiple '?' +## Flere '?' på rad + +Det er mulig å benytte seg av flere spørsmålstegn `?` for å returnere en verdi som baserer seg på flere betingelser. -A sequence of question mark operators `?` can return a value that depends on more than one condition. +For eksempel: -For instance: ```js run -let age = prompt('age?', 18); +let age = prompt("age?", 18); -let message = (age < 3) ? 'Hi, baby!' : - (age < 18) ? 'Hello!' : - (age < 100) ? 'Greetings!' : - 'What an unusual age!'; +let message = + age < 3 + ? "Hi, baby!" + : age < 18 + ? "Hello!" + : age < 100 + ? "Greetings!" + : "What an unusual age!"; -alert( message ); +alert(message); ``` -It may be difficult at first to grasp what's going on. But after a closer look, we can see that it's just an ordinary sequence of tests: +Det kan vøre uvant å forstå hva som foregår her med en gang. Tar vi en nærmere kikk derimot, ser vi at det bare er flere sekvenser med betingelser: -1. The first question mark checks whether `age < 3`. -2. If true -- it returns `'Hi, baby!'`. Otherwise, it continues to the expression after the colon '":"', checking `age < 18`. -3. If that's true -- it returns `'Hello!'`. Otherwise, it continues to the expression after the next colon '":"', checking `age < 100`. -4. If that's true -- it returns `'Greetings!'`. Otherwise, it continues to the expression after the last colon '":"', returning `'What an unusual age!'`. +1. Det første spørsmålstegnet sjekker om `age < 3`. +2. Om det er "true" returnerer den `'Hi, baby!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `age < 18`. +3. Om det "true", returner den `'Hello!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `age < 100`. +4. Om det "true", returner den `'Greetings!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `'What an unusual age!'`. -Here's how this looks using `if..else`: +Her kan du se hvordan det ville sett ut med `if..else`: ```js if (age < 3) { - message = 'Hi, baby!'; + message = "Hi, baby!"; } else if (age < 18) { - message = 'Hello!'; + message = "Hello!"; } else if (age < 100) { - message = 'Greetings!'; + message = "Greetings!"; } else { - message = 'What an unusual age!'; + message = "What an unusual age!"; } ``` -## Non-traditional use of '?' +## Utradisjonell bruk av '?' -Sometimes the question mark `?` is used as a replacement for `if`: +Det hender at spørsmålstegnet `?` blir brukt som et alternativ for `if`: ```js run no-beautify let company = prompt('Which company created JavaScript?', ''); @@ -212,15 +223,15 @@ let company = prompt('Which company created JavaScript?', ''); */!* ``` -Depending on the condition `company == 'Netscape'`, either the first or the second expression after the `?` gets executed and shows an alert. +Avhengig om påstanden `selskap == 'Netscape` stemmer eller ikke, vil enten den første eller andre koden etter `?` bli kjørt. -We don't assign a result to a variable here. Instead, we execute different code depending on the condition. +Her satt vi ikke resultatet til en variabel, men kjørte forskjellig kode avhengig av påstanden. -**We don't recommend using the question mark operator in this way.** +**Vi anbefaler ikke at man bruker spørsmålstegnet på denne måten.** -The notation is shorter than the equivalent `if` statement, which appeals to some programmers. But it is less readable. +Å skrive det på denne måten er kortere enn en `if` påstand, som kan være attraktivt for mange programmerere. Men det er vanskeligere å lese, og sees dermed på som dårlig vane. -Here is the same code using `if` for comparison: +Her kan du sammenligne den samme koden med en `if` påstand: ```js run no-beautify let company = prompt('Which company created JavaScript?', ''); @@ -234,6 +245,6 @@ if (company == 'Netscape') { */!* ``` -Our eyes scan the code vertically. Code blocks which span several lines are easier to understand than a long, horizontal instruction set. +Her leser øynene våre lodrett kode istedenfor lange, vannrette linjer med kode. Dette er en bedre og mer behagelig standard for programmere å håndtere. -The purpose of the question mark operator `?` is to return one value or another depending on its condition. Please use it for exactly that. Use `if` when you need to execute different branches of code. +Meningen med å bruke spørsmålstegnet `?` er å returnere verdier til variabler basert på en betingelse. Vennligst bruk den kun for det, og ellers bruk `if` når du skal kjøre flere forskjellige blokker med kode.