MODUŁ 02
Zmienne, typy danych i konwersje liczb
PPrezentacja dla nauczyciela
W tym module opanujesz bezpieczne przechowywanie danych za pomocą let i const, łączenie i formatowanie napisów oraz jawną konwersję wartości tekstowych z pól formularza na liczby, bez której nie da się poprawnie wykonać obliczeń.
Deklarowanie zmiennych: let i const
W nowoczesnym standardzie języka JavaScript do przechowywania danych służą dwa słowa kluczowe:
const(stała) — służy do deklarowania referencji lub wartości, która po przypisaniu nie będzie zmieniana. W praktyce jest to domyślny wybór przy pobieraniu elementów z drzewa DOM (np.const przycisk = document.getElementById(...)) oraz dla stałych stawek podatku lub przeliczników.let(zmienna blokowa) — stosujemy wtedy, gdy wiemy, że wartość zmiennej będzie ulegać zmianie w toku działania programu (np. suma naliczana w pętli, licznik kliknięć czy aktualny indeks wyświetlanego zdjęcia).
Zarówno const, jak i let posiadają tzw. zasięg blokowy (są widoczne tylko wewnątrz bloku kodu ograniczonego nawiasami klamrowymi { }), co zapobiega przypadkowemu nadpisaniu zmiennych o takich samych nazwach w innych częściach programu. Przestarzałe słowo kluczowe var nie posiadało zasięgu blokowego i w nowym kodzie nie jest zalecane.
Podstawowe typy wartości to tekst (string, ujmowany w cudzysłowy), liczba (number, zarówno liczby całkowite, jak i zmiennoprzecinkowe z kropką zamiast przecinka) oraz wartość logiczna (boolean — true lub false).
W poniższym przykładzie zdefiniowano stałą cenę produktu oraz zmienną przechowującą naliczoną zniżkę. Przetestuj uruchomienie programu i zmień wartość zniżki:
function pokazInformacje() {
const produkt = "Aparat cyfrowy";
const cenaBazowa = 1200;
let znizka = 200;
let cenaKoncowa = cenaBazowa - znizka;
const wynik = document.getElementById("wynik");
wynik.textContent = produkt + " — cena promocyjna: " + cenaKoncowa + " zł";
}
Łączenie tekstu i metody łańcuchowe
Łączenie łańcuchów znaków (konkatenacja) odbywa się w JavaScripcie za pomocą operatora +. Jeżeli przynajmniej jeden ze składników jest tekstem, drugi zostanie automatycznie przekonwertowany na postać tekstową i doklejony na końcu. Na przykład wyrażenie "Cena: " + 50 + " zł" utworzy napis "Cena: 50 zł".
Z operacją tą wiąże się jednak częsty błąd: jeśli obie wartości są tekstami, operator + nie doda ich matematycznie, lecz sklei. Wyrażenie "10" + "20" da w wyniku "1020", a nie oczekiwane 30.
Do bezpiecznego przetwarzania danych tekstowych wprowadzanych przez użytkowników służą wbudowane metody obiektów String:
tekst.trim()— usuwa tzw. białe znaki (spacje, tabulatory, znaki nowej linii) z początku i z końca napisu. Niezbędna metoda przy sprawdzaniu, czy użytkownik nie wpisał w formularzu samych spacji.tekst.toUpperCase()— zwraca kopię łańcucha znaków ze wszystkimi literami zamienionymi na wielkie (np. do ujednolicenia kodów pocztowych lub identyfikatorów).tekst.toLowerCase()— zwraca kopię tekstu z małymi literami (np. do normalizacji adresów e-mail).
Przykład pobiera imię oraz nazwę miasta, czyści spacje metodą trim(), zamienia miasto na wielkie litery i składa gotowy komunikat.
Wpisz własne dane i sprawdź efekt w edytorze:
function formatujDane() {
const imie = document.getElementById("poleImie").value.trim();
const miasto = document.getElementById("poleMiasto").value.trim().toUpperCase();
const wynik = document.getElementById("wynikTekst");
wynik.textContent = "Użytkownik: " + imie + " (oddział: " + miasto + ")";
}
Konwersja tekstu na liczby: Number, parseFloat i parseInt
Kluczową zasadą pracy z formularzami w języku JavaScript jest pamiętanie, że właściwość .value dowolnego pola wejściowego (nawet zadeklarowanego jako <input type="number">) zawsze zwraca wartość typu tekstowego (string). Aby wykonać na niej operacje matematyczne (dodawanie, obliczanie podatku, sumowanie pozycji zamówienia), należy dokonać jawnej konwersji na typ liczbowy.
W języku JavaScript stosuje się trzy podstawowe metody konwersji:
Number(wartosc)— konwertuje cały przekazany łańcuch znaków na liczbę. Jeżeli w tekście znajdzie się jakikolwiek nieobsługiwany znak (np. spacja w środku lub litera), wynikiem będzie specjalna wartośćNaN(Not a Number).parseFloat(wartosc)— odczytuje liczbę zmiennoprzecinkową od początku napisu aż do pierwszego niepasującego znaku. Jest to najczęściej stosowana funkcja przy obliczeniach cen, wag czy wymiarów (np.parseFloat("49.50 zł")zwróci poprawnie liczbę49.5).parseInt(wartosc, podstawa)— odczytuje liczbę całkowitą. Zawsze należy podawać drugi parametr oznaczający podstawę systemu liczbowego — w codziennych zadaniach jest to system dziesiętny, czyli10:parseInt(pole.value, 10).
Do zaokrąglania wyników służą metody obiektu Math: Math.round(liczba) (zaokrąglenie do najbliższej liczby całkowitej) oraz Math.floor(liczba) (zaokrąglenie w dół).
Kalkulator pobiera dwie kwoty netto, konwertuje je za pomocą parseFloat(), sumuje i powiększa o podatek VAT.
W edytorze poniżej przetestuj działanie z różnymi kwotami:
function obliczSume() {
const cena1 = parseFloat(document.getElementById("cena1").value);
const cena2 = parseFloat(document.getElementById("cena2").value);
const sumaNetto = cena1 + cena2;
const stawkaVat = 0.23;
const sumaBrutto = Math.round(sumaNetto * (1 + stawkaVat) * 100) / 100;
const wynik = document.getElementById("wynikKalkulatora");
wynik.textContent = "Suma brutto do zapłaty: " + sumaBrutto + " zł";
}
Ćwiczenia
- 1Deklaracja stałej constZadeklaruj stałą reprezentującą nazwę szkoły i wypisz ją w konsoli.Zadanie i podpowiedzi →
- 2Modyfikacja zmiennej letUtwórz zmienną let, zmień jej wartość i wypisz wynik do konsoli.Zadanie i podpowiedzi →
- 3Sprawdzenie typu typeofUżyj operatora typeof do zbadania typu zmiennej tekstowej.Zadanie i podpowiedzi →
- 4Łączenie imienia i nazwiskaPołącz dwa teksty ze spacją za pomocą operatora konkatenacji +.Zadanie i podpowiedzi →
- 5Tworzenie adresu URLPołącz protokół, domenę oraz ścieżkę w pełny adres URL.Zadanie i podpowiedzi →
- 6Czyszczenie białych znaków trim()Usuń zbędne spacje z początku i końca tekstu za pomocą metody trim().Zadanie i podpowiedzi →
- 7Normalizacja do wielkich literZamień tekst na wielkie litery za pomocą toUpperCase().Zadanie i podpowiedzi →
- 8Normalizacja adresu e-mailPrzekształć adres poczty elektronicznej na małe litery za pomocą toLowerCase().Zadanie i podpowiedzi →
- 9Łączenie metod łańcuchowychOczyść tekst ze spacji i przekształć na wielkie litery w jednym wyrażeniu.Zadanie i podpowiedzi →
- 10Pułapka sklejania tekstów a konwersja NumberPokaż różnicę między sklejaniem stringów a dodawaniem po konwersji Number().Zadanie i podpowiedzi →
- 11Konwersja liczby całkowitej parseIntPrzekształć tekst na liczbę całkowitą za pomocą parseInt() z podaniem podstawy dziesiętnej.Zadanie i podpowiedzi →
- 12Konwersja liczby ułamkowej parseFloatOdczytaj liczbę zmiennoprzecinkową z tekstu zawierającego jednostkę.Zadanie i podpowiedzi →
- 13Obliczenie ceny brutto z podatkiem VATOblicz cenę brutto na podstawie ceny netto i stawki VAT 23%.Zadanie i podpowiedzi →
- 14Zaokrąglanie wyników Math.roundZaokrąglij obliczony wynik do najbliższej liczby całkowitej za pomocą Math.round().Zadanie i podpowiedzi →
- 15Zaokrąglanie w dół Math.floorWyznacz liczbę pełnych godzin z minut za pomocą Math.floor().Zadanie i podpowiedzi →
- 16Sformatowane podsumowanie zamówieniaPołącz oczyszczanie tekstu, konwersję ceny, obliczenie wartości i formatowanie etykiety.Zadanie i podpowiedzi →