W parku pełnym dinozaurów, każdy krok musi być dokładnie zaplanowany i wykonany we właściwej kolejności. Tak samo jest w JavaScript – kod wykonuje się jako sekwencja instrukcji, które muszą być odpowiednio ustrukturyzowane, aby program działał poprawnie i bezpiecznie.
Instrukcja (statement) w JavaScript to komenda, która wykonuje określone zadanie. Jest to jak pojedynczy rozkaz wydany pracownikowi Parku Jurajskiego – na przykład "nakarm T-Rexa" lub "sprawdź ogrodzenie".
W JavaScript każda instrukcja zwykle kończy się średnikiem (choć, jak zobaczymy w następnej lekcji, jest to czasem opcjonalne):
1let dinosaurCount = 5; // Deklaracja zmiennej
2console.log("Uwaga!"); // Wywołanie funkcji
3dinosaurCount++; // Inkrementacja wartościInstrukcje wykonywane są w kolejności, w jakiej zostały zapisane – od góry do dołu. To jak procedura bezpieczeństwa w Parku Jurajskim, gdzie kroki muszą być wykonywane w ściśle określonej kolejności:
1// Procedura zamykania zagrody T-Rexa
2verifyDinosaurLocation(); // 1. Sprawdź położenie dinozaura
3activateGates(); // 2. Aktywuj bramy
4closeFencedArea(); // 3. Zamknij ogrodzony obszar
5verifyEnclosureSecurity(); // 4. Sprawdź bezpieczeństwo zagrodyBlok kodu to grupa instrukcji zawarta w nawiasach klamrowych
{ }. Działa jak ogrodzona strefa w Parku Jurajskim – wydziela określony obszar, który ma swoje własne zasady i ograniczenia.1// Blok kodu kontrolujący procedurę przeglądu zdrowia dinozaurów
2{
3 let healthStatus = checkDinosaurVitals();
4 updateMedicalRecords(healthStatus);
5
6 if (healthStatus === "Krytyczny") {
7 alertVeterinaryTeam();
8 }
9}Bloków kodu używamy głównie w czterech sytuacjach:
Funkcje to kluczowe "procedury" w naszym parku, które można wykonywać wielokrotnie:
1function feedCarnivore(dinosaurType, foodAmount) {
2 // Ten blok kodu definiuje procedurę karmienia mięsożercy
3 console.log(`Przygotowanie posiłku dla ${dinosaurType}`);
4 prepareMeat(foodAmount);
5 openFeedingHatch();
6 closeFeedingHatch();
7 console.log("Karmienie zakończone");
8}Podobnie jak decyzje personelu parku zależą od różnych sytuacji, tak w JavaScript używamy bloków kodu z instrukcjami warunkowymi:
1if (rainLevel > 50) {
2 // Ten blok wykonuje się tylko podczas silnych opadów
3 evacuateOpenAreas();
4 secureOutdoorEquipment();
5 activateEmergencyShelters();
6}Gdy w parku trzeba przeprowadzić tę samą procedurę dla wielu zagród czy dinozaurów, używa się pętli:
1for (let i = 0; i < parkSectors.length; i++) {
2 // Ten blok wykonuje się dla każdego sektora parku
3 checkSecuritySystems(parkSectors[i]);
4 updateSecurityLogs(parkSectors[i]);
5}Czasem bloków kodu używamy tylko po to, by ograniczyć zakres zmiennych – podobnie jak w parku mamy strefy o ograniczonym dostępie:
1{
2 // Zmienne zadeklarowane tutaj są dostępne tylko wewnątrz tego bloku
3 let securityCode = "TRex2023";
4 activateSecurityProtocol(securityCode);
5}
6// Zmienna securityCode nie jest już dostępna tutajBloki kodu mają kluczowe znaczenie dla zakresu zmiennych zadeklarowanych za pomocą
let i const. Zmienne te są widoczne tylko wewnątrz bloku, w którym zostały zadeklarowane.To jak pracownicy mający dostęp tylko do określonych stref w Parku Jurajskim:
1{
2 // Laboratorium genetyczne - dostęp tylko dla upoważnionych
3 let dinoGenomeSequence = "ACGTACGT...";
4
5 // Zmienna jest dostępna tylko tutaj
6 modifyDinoGenome(dinoGenomeSequence);
7}
8
9// Błąd! Ta zmienna nie jest dostępna poza laboratorium
10// console.log(dinoGenomeSequence);Dla lepszego zobrazowania, porównajmy zakresy zmiennych do stref bezpieczeństwa w parku:
1// Strefa ogólnodostępna (globalny zakres)
2let parkName = "Jurassic Park";
3
4function checkParkStatus() {
5 // Strefa dla pracowników (zakres funkcji)
6 let isOpen = true;
7 let visitorCount = 368;
8
9 if (visitorCount > 350) {
10 // Strefa kontroli tłumu (zakres bloku)
11 let alertLevel = "Żółty";
12 console.log(`Alert poziomu: ${alertLevel}`);
13 }
14
15 // alertLevel nie jest tu dostępny - błąd!
16 // console.log(alertLevel);
17}
18
19// Ani isOpen, ani visitorCount nie są tu dostępne - błąd!
20// console.log(isOpen);Bloki kodu mogą być również zagnieżdżone (bloki wewnątrz bloków), podobnie jak w Parku Jurajskim mamy strefy wewnątrz innych stref:
1// Strefa pracownicza
2{
3 let employeeAccessLevel = 2;
4
5 // Strefa genetyczna - wyższy poziom dostępu
6 if (employeeAccessLevel >= 3) {
7 let geneticLabAccess = true;
8
9 // Wysokie bezpieczeństwo - ścisła kontrola
10 if (geneticLabAccess) {
11 let embryoStorageCode = "LS-445-23A";
12 console.log(`Kod dostępu: ${embryoStorageCode}`);
13 }
14 }
15}W JavaScript występuje mechanizm zwany "hoisting" - deklaracje zmiennych i funkcji są "podnoszone" na górę ich zakresu. Jednak wartości przypisane do zmiennych nie są podnoszone.
To jak przygotowanie wszystkich procedur bezpieczeństwa przed otwarciem parku:
1// Ta funkcja jest dostępna tutaj dzięki hoistingowi
2securityCheck();
3
4// Deklaracja funkcji
5function securityCheck() {
6 console.log("Systemy bezpieczeństwa sprawdzone");
7}
8
9// Zmienne zadeklarowane przez var są "podnoszone"
10console.log(parkStatus); // undefined, ale nie błąd
11var parkStatus = "Otwarty";
12
13// let i const NIE są w pełni podnoszone
14// console.log(dinosaurCount); // Błąd: Cannot access 'dinosaurCount' before initialization
15let dinosaurCount = 20;W JavaScript ważne jest rozróżnienie między instrukcjami a wyrażeniami:
1// Wyrażenia - zwracają wartość
25 + 3 // Wyrażenie, które zwraca 8
3dinosaurWeight * 0.5 // Wyrażenie, które zwraca połowę wagi
4isDangerousSpecies("T-Rex") // Wyrażenie, które zwraca true
5
6// Instrukcje - wykonują akcje
7let visitorsToday = 500; // Instrukcja deklaracji
8if (visitorsToday > 400) { // Instrukcja warunkowa
9 activateCrowdControl();
10}Zrozumienie instrukcji i bloków kodu jest jak poznanie mapy Parku Jurajskiego – pozwala bezpiecznie nawigować przez kod. Oto przykład złożonego kodu z wykorzystaniem instrukcji, bloków i różnych zakresów:
1// System monitorowania parku
2
3// Zmienne globalne
4const parkName = "Jurassic Park";
5let parkStatus = "Otwarty";
6let globalAlertLevel = "Normalny";
7
8// Funkcja głównego monitoringu
9function monitorParkSystems() {
10 let systemsOnline = true;
11
12 // Sprawdzenie ogrodzeń
13 checkElectricalFences();
14
15 // Blok monitorowania dinozaurów
16 {
17 let activeDinosaurs = getDinosaurStatus();
18
19 // Pętla sprawdzająca każdego dinozaura
20 for (let i = 0; i < activeDinosaurs.length; i++) {
21 let dinosaur = activeDinosaurs[i];
22
23 // Blok warunków dla niebezpiecznych gatunków
24 if (dinosaur.dangerLevel > 3) {
25 // Wewnętrzny blok procedur awaryjnych
26 {
27 let emergencyProtocol = `Protokół-${dinosaur.species}`;
28 console.log(`Aktywacja: ${emergencyProtocol}`);
29
30 // Ta zmienna jest dostępna tylko tutaj
31 let emergencyTeam = selectTeamForSpecies(dinosaur.species);
32 alertSecurityTeam(emergencyTeam);
33 }
34
35 // Zmienna emergencyTeam nie jest dostępna tutaj
36 updateSecurityLogs(dinosaur);
37 }
38 }
39 }
40
41 // Zmienne z bloku monitorowania dinozaurów nie są tu dostępne
42 return generateStatusReport();
43}
44
45// Funkcja pomocnicza
46function checkElectricalFences() {
47 let sections = 12;
48 let failedSections = 0;
49
50 for (let i = 1; i <= sections; i++) {
51 let sectionStatus = getFenceStatus(i);
52
53 if (sectionStatus !== "Aktywny") {
54 failedSections++;
55
56 // Blok awaryjny
57 {
58 let repairTeam = "Echo";
59 dispatchRepairTeam(repairTeam, i);
60 }
61 }
62 }
63
64 if (failedSections > 0) {
65 globalAlertLevel = "Podwyższony";
66 }
67}W powyższym przykładzie widać, jak bloków kodu można użyć do organizacji kodu, kontrolowania zakresu zmiennych i tworzenia logicznej struktury programu. Każdy blok działa jak oddzielna strefa w parku, z własnymi zasadami i ograniczeniami.
Instrukcje i bloki kodu w JavaScript są jak procedury bezpieczeństwa i strefy w Parku Jurajskim – utrzymują porządek, organizację i bezpieczeństwo. Dobrze zorganizowany kod, wykorzystujący odpowiednio instrukcje i bloki, jest łatwiejszy do zrozumienia, utrzymania i rozwijania.
Najważniejsze koncepcje do zapamiętania:
{ }let i const)W następnej lekcji przyjrzymy się bliżej semicolonom w JavaScript oraz ich opcjonalności, co jest jak poznanie niuansów w protokołach bezpieczeństwa parku – czasem są absolutnie niezbędne, a innym razem można je pominąć.