JavaScript na egzaminie INF.03

INF.03 · teoria
autor: redakcja · 24.08.2026 · aktualizacja: 08.09.2026
JavaScript w kwalifikacji INF.03: najważniejsze zasady, przykłady i 153 powiązane pytania w banku.
JavaScript w za­da­niach INF.03 rzadko wy­stę­pu­je jako duży pro­gram. Czę­ściej do­sta­jesz kil­ka­na­ście linii i py­ta­nie, co znaj­dzie się w zmien­nej albo co pojawi się na ekra­nie. Punkt zdo­by­wasz, gdy wy­ko­nasz ten kod w głowie linia po linii, razem z kon­wer­sja­mi typów i war­to­ścią zwra­ca­ną przez funk­cję. Dla­te­go każdy przy­kład po­ni­żej ma podany wynik.

let, const i var: zasięg oraz przy­pi­sa­nie

var ma zasięg całej funk­cji, a let i const zasięg bloku, czyli naj­bliż­szych klamer. Naj­wy­raź­niej widać to na licz­ni­ku pętli:
1
2
3
4
5
6
7
for (var i = 0; i < 3; i++) {}
console.log(i);
// 3 - licznik zyje dalej, bo var nie widzi klamer
for (let j = 0; j < 3; j++) {}
console.log(j);
// ReferenceError - licznik zniknal razem z blokiem
const blo­ku­je po­now­ne przy­pi­sa­nie, ale nie za­war­tość ta­bli­cy ani obiek­tu:
1
2
3
4
5
6
const lista = [1, 2];
lista.push(3);
// dziala, lista to teraz [1, 2, 3]
lista = [];
// TypeError - zmieniasz sama zmienna, a nie jej zawartosc
Osobno działa moment od­czy­tu. Zmien­na z var od­czy­ta­na przed de­kla­ra­cją daje undefined, a let i const w tym samym miej­scu rzu­ca­ją ReferenceError, bo do linii z de­kla­ra­cją siedzą w mar­twej stre­fie.

Kon­wer­sje typów i po­rów­na­nie == kontra ===

Ope­ra­tor + przy tek­ście łączy i liczy od lewej do prawej; minus, gwiazd­ka i uko­śnik wy­mu­sza­ją liczbę.
Wy­ra­że­nie
Wynik
1 + 2 + "3"
"33"
"1" + 2 + 3
"123"
"5" - 2
3
"6" * "2"
12
Number("12,5")
NaN (se­pa­ra­tor to kropka)
parseInt("12abc")
12
Number("12abc")
NaN
Number(""), Number(" ")
0
typeof null
"object"
== po­rów­nu­je po kon­wer­sji, === po­rów­nu­je war­tość i typ:
Wy­ra­że­nie
Wynik
"10" == 10
true
"10" === 10
false
0 == ""
true
null == undefined
true
null == 0
false
NaN === NaN
false
Do spraw­dza­nia NaN służy Number.isNaN(x), bo glo­bal­ne isNaN("abc") zwraca true nawet dla tekstu.

Funk­cje, funk­cje strzał­ko­we i war­tość zwra­ca­na

Te dwa zapisy dają dla suma(2, 3) ten sam wynik 5:
1
2
3
4
5
function suma(a, b) {
return a + b;
}
const suma = (a, b) => a + b;
Róż­ni­ca za­czy­na się przy klam­rach. Strzał­ka bez klamer zwraca wy­ra­że­nie sama, z klam­ra­mi trzeba do­pi­sać return:
1
2
3
4
5
6
7
const zle = (a, b) => { a + b; };
// zwraca undefined - jest obliczenie, nie ma zwrotu
const dobrze = (a, b) => { return a + b; };
const obiekt = (x) => ({ v: x });
// obiekt ze strzalki wymaga nawiasow, inaczej klamra to blok kodu
De­kla­ra­cję function można wy­wo­łać przed jej za­pi­sem; funk­cję przy­pi­sa­ną do const w tej samej sy­tu­acji za­trzy­ma ReferenceError. Bra­ku­ją­cy ar­gu­ment daje NaN, bo suma(2) liczy 2 + undefined. Nazwa funk­cji bez na­wia­sów to funk­cja jako war­tość, z na­wia­sa­mi to na­tych­mia­sto­we wy­wo­ła­nie.

Ta­bli­ce: push, length, indexOf i pętle

In­dek­sy za­czy­na­ją się od zera, więc ostat­ni ele­ment ma indeks o jeden mniej­szy niż dłu­gość ta­bli­cy:
1
2
3
4
5
const tab = [10, 20, 30];
tab[tab.length - 1]; // 30, ostatni element
tab[tab.length]; // undefined, poza tablica
tab.push(40); // zwraca 4, czyli NOWA dlugosc
indexOf po­rów­nu­je tak jak ===, więc typ szu­ka­nej war­to­ści ma zna­cze­nie:
1
2
[1, 2, 3].indexOf("2"); // -1, bo tekst "2" to nie liczba 2
[1, 2, 3].includes("2"); // false, z tego samego powodu
Trzy pętle po tej samej ta­bli­cy dają do ręki trzy różne rzeczy:
1
2
3
for (let i = 0; i < tab.length; i++) { } // i to INDEKS: 0, 1, 2
for (const el of tab) { } // el to WARTOSC: 10, 20, 30
for (const k in tab) { } // k to KLUCZ jako tekst: "0", "1", "2"
Wa­ru­nek i <= tab.length wykona jeden obieg za dużo i od­czy­ta undefined: częsta pu­łap­ka w ar­ku­szu. Przy for..in klucz jest tek­stem, więc k + 1 dałoby "01" za­miast 1.

Wa­run­ki, war­to­ści fał­szy­we i pu­łap­ki w czy­ta­niu kodu

Fał­szy­we jest do­kład­nie sześć war­to­ści: false, 0, "", null, undefined, NaN. Każda inna jest praw­dzi­wa, w tym "0", pusta ta­bli­ca i " ". Osobno: [] == false daje true, bo pusta ta­bli­ca za­mie­nia się naj­pierw na pusty tekst, a potem na zero.
Dwa zapisy, które w ar­ku­szu wy­glą­da­ją nie­win­nie i zmie­nia­ją wynik:
1
2
3
4
5
6
7
8
9
10
11
12
if (x = 5) {
// POJEDYNCZE "=" przypisuje, wiec warunek jest zawsze prawdziwy
}
switch (wartosc) {
case 1:
// switch dopasowuje przez "===", wiec tekst "1" tu NIE wejdzie
komunikat = "jeden";
case 2:
// brak "break" wyzej: wykonanie leci dalej i nadpisuje komunikat
komunikat = "dwa";
}
Czy­ta­jąc za­da­nie, za­pi­suj war­to­ści zmien­nych po każdej linii: pa­mię­cio­we śle­dze­nie kodu to główne źródło błędów.

DOM, addEventListener i wa­li­da­cja for­mu­la­rza

Ele­ment ze strony po­bie­rasz na dwa spo­so­by i różnią się tym, co przyj­mu­ją:
1
2
3
4
5
document.getElementById("wiek");
// samo id, BEZ krzyzyka
document.querySelector("#wiek");
// selektor CSS; zwraca pierwszy pasujacy element albo null
Z pola input czy­tasz .value, z aka­pi­tu .textContent. War­tość .value jest zawsze tek­stem, więc do­da­nie dwóch pól skleja napisy za­miast dodać liczby:
1
2
3
4
5
pole1.value + pole2.value;
// "2" + "3" daje "23"
Number(pole1.value) + Number(pole2.value);
// 5
Ob­słu­gę zda­rze­nia pod­pi­nasz nazwą funk­cji, bez na­wia­sów:
1
2
3
4
5
6
7
8
przycisk.addEventListener("click", sprawdz);
formularz.addEventListener("submit", function (event) {
event.preventDefault();
if (pole.value.trim() === "") {
komunikat.textContent = "Pole nie może być puste";
}
});
Z na­wia­sa­mi (sprawdz()) wy­wo­łasz funk­cję od razu przy wczy­ta­niu strony, a pod zda­rze­nie trafi jej wynik. Bez preventDefault() strona prze­ła­du­je się przed po­ka­za­niem ko­mu­ni­ka­tu. Sam if (pole.value) nie wy­star­cza, bo " " jest praw­dzi­we: dla­te­go w przy­kła­dzie stoi .trim() === "". Skąd biorą się pola for­mu­la­rza, opi­su­je ar­ty­kuł o for­mu­la­rzach, a pełne za­da­nia znaj­dziesz w ar­ku­szach INF.03.
ZAWODNIK
egzamin zawodowy INF.02 · INF.03 · INF.04
Serwer Discord›
Egzaminy zawodowe IT/Matury/Studia
@yastor
© 2026 Zawodnik · by Yastor
Arkusze i zasady oceniania pochodzą z CKE. Serwis nie jest powiązany z Centralną Komisją Egzaminacyjną.