Opravte sčítání
důležitost: 5
Následující kód se zeptá uživatele na dvě čísla a zobrazí jejich součet.
Nefunguje však správně. Výstup v níže uvedeném příkladu (pro defaultní hodnoty v dotazech) je 12.
Proč? Opravte jej. Výsledek by měl být 3.
let a = prompt("První číslo?", 1);
let b = prompt("Druhé číslo?", 2);
alert(a + b); // 12
Důvodem je, že funkce prompt vrací uživatelský vstup jako řetězec.
V proměnných jsou tedy hodnoty po řadě "1" a "2".
let a = "1"; // prompt("První číslo?", 1);
let b = "2"; // prompt("Druhé číslo?", 2);
alert(a + b); // 12
To, co bychom měli udělat, je před sečtením převést řetězce na čísla. Například použít Number() nebo před ně uvést +.
Například rovnou před prompt:
let a = +prompt("První číslo?", 1);
let b = +prompt("Druhé číslo?", 2);
alert(a + b); // 3
Nebo až při volání alert:
let a = prompt("První číslo?", 1);
let b = prompt("Druhé číslo?", 2);
alert(+a + +b); // 3
V posledním kódu používáme současně unární i binární +. Vypadá to legračně, že?