Ćwiczenie przy komputerze: własna stała i sprawdzanie typów
Rozgrzewka · 3 minuty
Rozgrzewka: to, co już wiecie
Czym różni się var od let, gdy spróbujemy zadeklarować tę samą nazwę drugi raz?
Co się stanie, gdy odczytamy zmienną let poza blokiem { }, w którym ją zadeklarowano?
Dlaczego nazwa zmiennej 1age jest niepoprawna?
Część 1 · Stała const
Trzeci sposób: const
Znacie już var i let - oba tworzą pudełko, do którego można włożyć wartość, a potem ją zmienić. const tworzy pudełko zaklejone taśmą: musicie włożyć wartość od razu przy deklaracji, a potem nie da się jej podmienić. Życiowe porównanie: to jak zalanie czegoś żywicą - widać, co jest w środku, ale nie da się tego wyjąć ani wymienić.
MDN: Learn_web_development/Core/Scripting/Variables (sekcja „Constants in JavaScript”)
Część 2 · const czy let?
Kiedy const, kiedy let?
MDN podaje prostą zasadę: używaj const, kiedy możesz, i let, kiedy musisz. Jeżeli wiecie, że wartość się nie zmieni (np. liczba Pi, cena stała, dzisiejsza data z serwera), piszcie const. Jeżeli wartość ma się zmieniać w trakcie działania skryptu (licznik, wynik gry, odpowiedź użytkownika), piszcie let. var od poprzedniej lekcji nie używamy w nowym kodzie w ogóle.
Sytuacja
Słowo
Wartość znana od razu i się nie zmieni
const
Wartość będzie się zmieniać (licznik, wynik)
let
Nowy kod pisany od poprzedniej lekcji
nigdy var
MDN: Variables (sekcja „When to use const and when to use let”): „Use const when you can, and use let when you have to”
Część 3 · Typy danych
Pięć podstawowych typów danych
Każda wartość w JavaScript ma typ. Operator typeof to etykieta, która mówi, jaki typ ma dana wartość - działa jak nalepka na pudełku.
Ciekawostka z Wikipedii: typ boolean nazwano na cześć George'a Boole'a, matematyka, który w połowie XIX wieku jako pierwszy opisał algebraiczny system logiki. Stąd „algebra Boole'a” i wartości prawda/fałsz, na których dziś działają wszystkie warunki w kodzie.
MDN: Learn_web_development/Core/Scripting/Variables (sekcja „Variable types”) + Web/JavaScript/Guide/Data_structures (typy Undefined i Null, tabela typeof) · ciekawostka: Wikipedia (en), hasło „Boolean data type” (en.wikipedia.org/wiki/Boolean_data_type)
Część 4 · typeof w akcji
JavaScript sam zgaduje typ
JavaScript jest „dynamicznie typowany”: nie musicie z góry mówić, jakiego typu będzie zmienna - typ zależy od tego, co do niej włożycie. Uwaga: wartość w cudzysłowie zawsze jest tekstem (string), nawet jeśli w środku są same cyfry.
let myNumber = "500";
console.log(typeof myNumber); // "string" - to tekst, bo w cudzysłowie
myNumber = 500;
console.log(typeof myNumber); // "number" - teraz to liczba
Ta sama zmienna może w trakcie działania skryptu zmienić typ - JavaScript nic nie sprawdza z góry, w przeciwieństwie do niektórych innych języków.
MDN: Variables (sekcja „Dynamic typing”)
Część 5 · Konwersja typów
Gdy tekst spotyka liczbę
Znak + na tekście i liczbie skleja je w jeden napis. Znak - zawsze liczy, więc zamienia tekst na liczbę, jeśli się da. Gdy zamiana się nie uda, wynikiem jest NaN („Not a Number”) - „zepsuty wynik” działania, które nie ma sensu liczbowego.
MDN: Variables (sekcja „Dynamic typing”)
Egzamin INF.03
Tak pytają na egzaminie
W JavaScript wynik operacji jest równy wartości NaN, jeśli skrypt próbował wykonać
parseFloat zamiast parseInt na zmiennej liczbowej.
działanie arytmetyczne, a zawartość zmiennej była napisem.
działanie arytmetyczne na dwóch zmiennych liczbowych dodatnich.
funkcję sprawdzającą długość napisu, a zawartość zmiennej była liczbą.
CKE, E.14, czerwiec 2016, zadanie 29 (bank pytań, przedmiot strony, temat javascript)
Ćwiczenie przy komputerze · 20 minut
Ćwiczenie: const i typeof
Otwórz plik script.js z poprzedniej lekcji w edytorze kodu.
Zadeklaruj const PI = 3.14, a w linii niżej spróbuj wykonać PI = 3.14159.
Odśwież page.html, otwórz konsolę (F12 → Console) i zapisz na kartce dokładną treść komunikatu błędu.
Zakomentuj tę linię błędu znakiem //, żeby reszta skryptu znowu działała.
Dopisz trzy zmienne: let studentName = "Ola", let studentAge = 17, let isPresent = true, a pod nimi trzy console.log(typeof ...) - po jednym na zmienną.
Sprawdź w konsoli, że wypisało string, number, boolean. Zapisz plik, żeby wrócić do niego na następnej lekcji.
Na koniec
Sprawdź się
Czym różni się const od let?
Co zwróci typeof dla zmiennej, do której nie przypisano żadnej wartości?
Jaki wynik da działanie "5" - 3, a jaki "5" + 3? Dlaczego są różne?
To koniec tematu zmiennych - na następnej lekcji: operatory w JavaScript.
Poza szkołą
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Typ sprawdzany dopiero, gdy skrypt się uruchomi (typeof w trakcie działania)
TypeScript dopisuje typy do JavaScript i sprawdza je, zanim kod w ogóle się uruchomi
narzędzia
NaN widoczne dopiero po zobaczeniu wyniku w konsoli
Edytor kodu z TypeScript podkreśla błąd typu na czerwono w trakcie pisania
narzędzia
const czy let - decyduje piszący na bieżąco
Linter (np. ESLint) wymusza const wszędzie tam, gdzie zmienna się nie zmienia
narzędzia
MDN: Variables (sekcja „When to use const and when to use let”)