100 pytań rekrutacyjnych Flashcards
Czym jest funkcja strzałkowa
Uproszczona funkcja nie posiadająca this, arguments czy super, nie może być konstruktorem i najlepiej sprawdza się jako skrócony zapis zwykłych funkcji np. przekazywana jako argument
Jaki jest najszybszy sposób na pobranie elementu z drzewa DOM
od najszybszego do najwolniejszego:
- id - getElementById
- klasy - getElementByClassName
- bracia elementu czyli elementy znajdujące się na tym samym poziomie w trukturze DOM -previousElementSibling
- dzieci elementu - children
- potomkowie elementów, cyzli wszystkie elementy wewnątrz danego elementu + querzSelectiorAll(“*”)
- uniwersalny selektor - wybór wszystkich elementów w dokumencie - *
- atrybuty - getAttribute
- pseudoklasy - :first-child, :last-child
Czym jest let?
Wersja JavaScript ES6 wprowadziła słowa kluczowe let oraz const, które deklarują zmienną oraz stałą o zasięgu blokowym. Przez to ich zasięg jest ograniczony do bloku czy też wyrażenia, w którym są używane. Natomiast zmienne deklarowane przez var mają zasięg globalny, chyba że były zadeklarowane w funkcji przez co miały lokalny zasięg.
Wywołanie zmiennej przed jej deklaracją powoduje błąd “is not defined”. Przy var nie ma błędu i inicjalizowana jest wartość undefined.
Zdefiniowanie zmiennej let poza funkcją nie dodaje jest do obiektu window. Przy var dodaje.
Czy zdarzenia window.onload oraz document.onload są wywoływane jednocześnie
window.onload jest wywoływane, gdy DOM jest gotowy. Natomiast document.onload jest wywoływany kiedy window.onload jest gotowy i załadowany, ale np obrazki jeszcze nie zostały do końca pobrane.
zmienna document.readyState odzwierciedlan postęp ładowania dokumentu:
loading, interactive (parsowanie się końcy, ale dalej ładowane są zasoby)
complete - pełne załadowanie
Czym jest null i undefined?
Null - reprezentuje intencjonalny brak wartości w zmiennej. Jeden z prymitywów JavaScript. Wartość null ma typ Object. Konwertuje się do 0 przy prymitywnych operacjach
Undefined - jest przypisywane jako wartość automatycznie do nowo utworzone zmiennej, jeśli nie została przypisana inna wartość podczas deklaracji zmiennej. Konwertuje się do NaN przy prymitywnych operacjach.
Jaka jest różnica pomiędzy atrybutem a właściwością?
Atrybuty to cześć HTML, Przechowuje oryginalną wartość z HTML, Nie wszystkie atrybuty mają właściwości, Modyfikowane za pomocą getAttribute i setAttribute
Właściwości to cecha obiektu DOM, Modyfikowane bezpośrednio np. element.property, Reprezentuje aktualny stan elementu w runtime, Wszystkie właściwości są dostępne w JS
Czym jest NaN, isNaN, isFinite?
NaN - to globalna właściwość reprezentująca wartość “Not-a-Number”. Wskazuje, że wartość nie jest dopuszczalną liczbą. Rzadko się z niej korzysta, ale czasem się pojawia podczas niedozwolonych operacji matematycznych np. Math.sqrt(-1)
isNaN - Funkcja sprawdzająca czy wartość jest niedozwoloną liczbą, zwraca true jeśli tak jest
isFinite - Jest to funkcja sprawdzająca czy wartość to skończona liczba
Czym jest operator typeof
Operator typeof w JavaScript zwraca typ danych przechowywanych w zmiennej.
Jaka jest różnica między window a document?
Window - Reprezentuje całe okno przeglądarki, zawiera właściwości globalne takie jak, localStorage, nawigator czy screen, Możesz używać metod związanych z przeglądarką alert(), setTimeout(), jest globalnym obiektem
Document - Reprezentuje dokument HTML, zawiera metody i właściwości do manipulacji elementami DOM, możesz manipulować treścią strony getElementByID, createElement(), jest czescią obiektu window
Czym jest JSON?
JSON - JavaScript Object Notation jest tekstowym formatem danych na bazie składni JavaScript. Jest stosowany w transmisji danych przez sieć.
Jakie są możliwości pobrania elementów z drzewa DOM?
getElementByID, getElementsByClassName,
getElementsBytagName
querySelector - zwraca pierwszy element według selectora css
querySelectorAll,
getElementsByName - atrybuty
Jak można dodać oraz usunąć klasę z elementu?
Klasę można dodać oraz usunąć operując na kolekcji classList
Jak uruchomić kod JavaScript gdy drzewo DOM jest już gotowe?
- umieścić skrypt na końcu strony przed tagiem zamykającym body
- Umieszczenie kodu w handlerze do wywołania na event DOMContentLoaded
- Obserwowanie zmian właściwości readyState aż osiągnie stan complete (if document.readyState == “complete”
Jak odczytać wszystkie kliknięcia na stronie?
Można wykorzystać event bubbling.
document.querySelector(“body”).addEventListener(“click”, function(){
});
Jak można stworzyć Obiekt w JS?
- Konstruktor Obiektu - let obj = new Object();
- Funkcja Create Obiektu - let obj = Object.create(null)
- Literał Obiektu - let obj = {}
- Funkcja konstruująca - function Item(name) {
this.name = name;
}
let item1 = new Item(“desk”); - Funkcja konstruująca z prototypem
- Klasa ES6
- Singleton
Do czego służy funkcja slice i splice?
Funkcja slice pozwala na zwrócenie nowej tablicy z wybranymi elementami od startowego indeksu aż do opcjonalnego indeksu jako drugi argument, bez uwzględnienia tego ostatniego elementu. Jeżeli drugi argument jest pominięty wybrane są elementy do końca tablicy.
Funkcja splice - Pozwala na usuwanie oraz dodawanie elementów do tablicy, zwracane są usunięte elementy. Pierwszy argument wskazuje pozycję do dodania albo usunięcia elementów. Drugi opcjonalny argument określa ilość elementów do usunięcia. Każdy kolejny opcjonalny argument jest dodawany do tablicy
Czym jest funkcja pierwszej klasy, wyższego rzędu, pure currying, unary
Funkcje w JavaScript są funkcjami pierwszej klasy, gdyż same same w sobie są obiektami i mogą być argumentem innej funkcji, mogą być zwracane z funkcji, również elementem tablicy czy przypisywane do zmiennych
Funkcja pierwszego rzędu w JS to taka funkcja, która nie akceptuje funkcji jako argumentu i nie zwraca funkcji.
Funkcja wyższego rzędu akceptuje funkcję jako argument albo zwraca funkcję
Funkcja unary to funkcja, która przyjmuje jeden argument (monadic)
Currying to proces tłumaczenia funkcji o wielu argumentach na funkcje o jednym argumencie. Jeśli kolejne argumenty są potrzebne to funkcja o jednym argumencie zwraca kolejną funkcję. Currying zwiększa możliwość ponownego wykonania funkcji.
Funkcja pure to funkcja, która gdziekolwiek wywołana w kodzie z tymi samymi argumentami zwróci taki sam wynik, bez skutków ubocznych.
Czym jest temporal Dead Zone?
Temporal Dead Zone to przestrzeń pomiędzy deklaracją zmienne let oraz stałej const, gdzie odwołanie się do tych wartości spowoduje błąd ponieważ nie są jeszcze zadeklarowane.
Czym jest funkcja natychmiastowa?
Funkcje natychmiastowe (IIFE) to funkcje wywołane natychmiast po zdefiniowaniu. Funkcje natychmiastowe pozwalają na zdefiniowanie prywatnych zmiennych nie dostępnych poza ciałem funkcji.
Czym jesy hoisting?
Hoistiong to sytuacja, gdzie deklaracje zmiennych są przeniesione na początek przed wykonaniem kodu.
Czym są klasy ES6?
Klasy ES6 (ECMAScript 2015) w JavaScript to specjalna składnia wprowadzona, aby uprościć tworzenie i zarządzanie obiektami oraz ich dziedziczeniem. Są to swego rodzaju “cukier składniowy” dla istniejącego w JavaScript mechanizmu prototypów. Klasy ES6 są bardziej czytelne i przypominają klasy z innych języków obiektowych, takich jak Java czy Python
Czym są Closures (domknięcia)
to funkcja, która “zapamiętuje” swój leksykalny kontekst nawet po zakończeniu działania funkcji, w której została zdefiniowana. Innymi słowy, funkcja wewnętrzna ma dostęp do zmiennych i zakresu funkcji zewnętrznej, nawet jeśli funkcja zewnętrzna już się zakończyła.
Czym jest Scope?
Scope (zakres) określa dostęp do zmiennych, funkcji i obiektów w pewnej konkretnej części kodu w trakcie jego wywołania. Scope determinuje widoczność zmiennych oraz innych zasobów w określonych częściach kodu.
Czym są callback oraz callback hell
Callback to funkcja, która jest przekazywana jako argument do innej funkcji i wywoływana w późniejszym czasie, często w odpowiedzi na jakieś zdarzenie lub zakończenie operacji asynchronicznej.
Callbacki są podstawowym sposobem obsługi asynchroniczności w JavaScript, zwłaszcza przed wprowadzeniem Promises i async/await.
Callback hell to sytuacja, w której używanie wielu zagnieżdżonych callbacków prowadzi do trudnego do odczytania i utrzymania kodu. Jest to problem, który pojawia się, gdy wykonujemy serię asynchronicznych operacji, gdzie każda kolejna zależy od wyniku poprzedniej.
Czym jest strict mode?
Strict mode (ang. tryb ścisły) to funkcja wprowadzona w języku JavaScript w wersji ECMAScript 5 (ES5), która umożliwia programistom uruchamianie kodu w bardziej restrykcyjnym środowisku. Dzięki temu trybowi możliwe jest unikanie pewnych błędów programistycznych oraz stosowanie lepszych praktyk kodowania.
‘use strict’;
W jaki sposób można wykorzystać historię w JavaScript?
obiekt history dostępny w window pozwala na skierowanie użytkownika do poprzedniej lub kolejnej strony którą odwiedził
Jakie typy danych możemy wyróżnić w JavaScript? Jaka jest różnica pomiędzy zmienną niezadeklarowaną a niezdefiniowaną?
Number, String, Boolean, Undefined, Object, Null, BigInt, Symbol
niezadeklarowana - zmienne nie istnieją w programie, przy próbie odczytania zwracany jest błąd
niezdefiniowana - istnieją, ale nie mają wartości, przy próbie odczytania zwracane jest undefined
Czym jest operator delete? Czym jest podwójna negacja? Czym jest Eval? Czym jest void(0)?
Operator delete pozwala na na skasowanie właściwości wraz z jej wartością.
Podwójna negacja zmienia typ zmiennej na typ boolean.
Funkcja eval pozwala na wywołanie wyrażenia zapisanego jako string. To znaczy, że jeżeli w stringu jest dodawanie zostanie ono wykonane. Jest to bardzo zła praktyka.
Void(0) - zapobiega odświeżaniu strony
Kto stworzył JavaScript? Porównanie JS do Javy. Czy JS uwzględnia duże litery? Czy JS jest kompilowanym czt interpreterowym językiem? Czym jest ScmaScript?
JavaScript stworzył Brendan Eich w 1995 r w firmie Netscape. Początkowo język nazywał się Mocha. Ale ze względów marketingowych zmieniono nazwę na JavaScript w pierwszych wydania beta.
Jak się ma JS do Javy?
JavaScript nijak ma się do Javy. Są to dwa oddzielne języki programowania i nic poza nazwą nie mają ze sobą wspólnego. Oba są językami obiektowymi i jak większość języków ma taką samą bazową składnię jak instrukcje warunkowe, pętle itd.
Czy Java Script uwzględnia duże litery?
JavaScript to język case-sensitive czyli w kodzie uwzględnia duże litery
Czy JS jest kompilowanym czy interpretowanym jezykiem?
JavaScript jest interpretowanym językiem, czyli interpreter czyta kod źródłowy, który jest zapisany w pliku tekstowym i następnie interpretowany jest linijka po linijce
Czym jest EcmaScript?
ExmaScript to standard będący bazą języka JS, ustandardyzowany przez organizację ECMA w standardzie ECMA-262.
Po co używać setTimeout(), po co używać setInterval()?
Funkcja setTimeout pozwala na wywołanie podanej funkcji w przybliżeniu po zdefiniowanym czasie. Wywoływana jest tylko raz i zwraca id, które można użyć do skasowania timera
Funkcja setinterval działa jak setTimeout z tą różnicą, że wywołuje kod wielokrotnie aż przerwie się ten cykl funkcją clearInterval.
Jak uzyskać adres url aktualnej strony? Jakie są składowe obiektu document.location? Jak uzyskać parametr z adresu URL?
Można użyć: window.location.href do uzyskania adresu url. Można podmienić url odnosząc się do tej wartości co przekieruje użytkownika.
href - cały url
protocol - https
host - np. policies.google.com
hostname - np. policies.google.com
hash - kotwica w linku
origin - https://policies.google.com
pathname /terms
port - numer portu w URL
Wystarczy new URLSearchParams(url.search)
urlParams.get(“nazwaParamateru”)
Jak sprawdzić czy string istnieje w innym stringu?
- subString
- includes (str = “Hello World!” , substring = “World” , str.includes(subString)
- użycie wyrażeń regularnych
(var str = “Hello World” regex = /World/ regex.test(str)
Jak sprawdzić czy obiekt ma daną właściwość/klucz?
- Użycie operatora in
let obj = {test: “abc” };
if( “test” in obj) console.log(true); - hasOwnProperty (nie brane są pod uwagę odziedziczone właściwości)
if(obj.hasOwnProperty(“test”)) - porównanie do undefined
if(obj.test1 == undefined)
Jak można enumerować właściwości obiektu?
for (var key in obj)
Czym jest obiekt arguments? Czy można dodać właściwość do funkcji? Czym jest polyfill?
Jest to obiekt dostępny w każdej funkcji z listą przekazanych argumentów do funkcji
Czy można dodać właściwość do funkcji.
Tak ponieważ funkcje są obiektem
Czym jest polyfill?
Jest to kawałek lodu, który dodaje nowsze funkcjonalności dla starszych przeglądarek, które normalnie ich nie wspierają
np. dla trim
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(ble ble ble);
}
Jak można wyświetlić aktualną datę?
let date = new Date()
Jak porównywać daty?
Do porównywania dat powinno używać się timestampów, czyli ilości sekund od 1 stycznia 1970 rok
date.getTime()
Jak można sprawdzić czy string zaczyna się innym stringiem?
Jak można pozbawić string białych znaków na początku i na końcu?
Jak zrobić string w wielu liniach?
if(“Hello World”. startsWith(“Hello)) // true
używa się do tego trim()
Od ES6 można używać backticków.
łączyć stringi znakiem +
Przy użyciu terminatora linii (niezalecane) “"
Jak dodać domyślną wartość do zmiennej? Jak dodać pary kluczy i wartości?
let data = a || 10
Za pomocą obiektu
let obj = {}
obj.key1 = “value1”;
Z pomocą nawiasów kwadratowych
obj[“key2”] = “value2”
z dynamiczną nazwą
const keyName = “key3”
obj[keyName] = “value3”
Jak używać instrukcji break i continue?
instrukcja break pozwala na wyjście z pętli w dowolnym momencie break;
Intrukcja continue przeskakuje jedną iterację
np.
for( let i = 0; i < 10;i++)
if(i% 2 == 0 ) continue; //Jeżeli parzyste przejdź do kolejnej iteracji nie wykonuj console.log
console.log(i);
Jak wygenerować losowe liczby? oraz liczby z zakresu
Math.floor((Math.random()*100) +1); // od 1 do 100
Math.floor(Math.random() * (max - min +1) ) +min;
jak zmienić style elementu html? jak zmienić atrybut elementu html?
zmieniając styl elementu
document.getElementsByTagName(‘body’)[0].style.backgroundColor = “green”
dodając klasę
document.getElementsByTagName(‘body’)[0].classList.add(“some-class”);
document.getElementsByTagName(‘body’)[0].setAttribute(“data-info”,”attr value”);
Jak wypełnić tablicę początkowymi wartościami? Jak skonwertować tablicę na obiekt? Jak posortować tablicę? Jak odwrócić element tablicy?
let arr = new Array(5).fill(0);
let arr = [“car”,”mustang”,”1970”]
let obj = {…arr};
let arr =[“Paweł”,”Ania”,”Barbara”,”Zenon”];
let arrSroted = arr.sort();
let arr = [“Paweł”,”Ania”,”Barbara”,”Zenon”];
let arrSorted = arr.sort();
let reversed = arrSorted.eeverse();
Czym jest AJAX?
AJAX to Asynchronous JavaScript and HXML używana aby wyświetlić dane asynchronicznie co pozwala na wysyłanie danych na serwer oraz otrzymanie danych zwrotnych dzięki czemu strona będzie bardziej dynamiczna.
Czym jest PWA? Jaki będzie rezultat działania 1 + 2 + “3”?
PWA to skrót od progressive web applications. Jest to specjalny typ aplikacji mobilnych dostępnych przez internet oraz budowanych w technologiach: Html, CSS oraz JS
Wynikiem działania będzie string “33”
Jak zareagować na kliknięcie przycisku back przeglądarki?
Jak wyłączyć menu prawego przycisku myszy?
window.onbeforeunload = function() { alert(“Czy zapisać dane?”); };
<body></body>
Czym są wrapper objects?
Jak wykryć, że funkcja jest wywołana z operatorem new?
to obiekty które opakowują prymitywne typy danych. Dzięki temu możliwe jest stosowanie metod takich jak toUpperCase()
function Car(){
if(new.target) console.log(“new Car()”);
}
Jaka jest różnica pomiędzy pętlami for in a for of
pętla for in iteruje na kluczach obiektu
pętla for of iteruje na wartościach obiektu
Jaka jest różnica pomiędzy call, apply i bind?
Funkcja call umożliwia wywołanie funkcji danego obiektu w kontekście innego obiektu.
Apply działa tak samo jak call ale argumenty są przekazywane w formie tablicy
Funkcja bind na stałe wiąże podaną funkcję z danym obiektem i zwraca ją do wielokrotnego wykorzystania
Dlaczego stosuje się format JSON?
do czego służy JSON.stringify()?
do czego służy JSON.Parse()?
Format JSON stosuje się w komunikacji między aplikacją internetową a serwerem.
Zamienia obiekt na jego reprezentację tekstową w formacie JSON
konwertuje dane z formy tekstowej w formacie JSON na obiekt JS
Czy można użyć zarezerwowanych słów jako identyfikatorów? Jak uzyskać szerokość i wysokość obrazka? Jak uzyskać szerokość oraz wysokość okna w JS
Nie, nazwy zmiennych, funkcji, labelów, obiektów nie mogą być słowami kluczowymi, jest to niedozwolone
let img = new Image();
img.onload = function() {
console.log(this.width + ‘x’ + this.height); }
img src= ‘https://blebleble’;
Szerokość: window.innerWidth, document.Element.clientWidth, document.body.clientWidth
Wysokość: window.innerHeight, document.Element.clientHeight, document. body.clientHeight
Czym jest operator trójelementowy - ternary? Jaka jest różnica między proto a prototype? Czym jest funkcja anonimowa?
let info = (4 > 3) ? “większe od 3” : “mniejsze od 3”;
Obiekt __proto__ jest używany do przeszukiwania łańcucha prototypów w celu znalezenia metod czy właściwości. Natomiast prototype jest obiektem w celu zbudowania łańcucha prototypów __proto__ gdy tworzymy nowy obiekt za pomocą new.
Jest to funkcja bez nazwy, przypisywane są do zmiennych albo używane jako callbacki np. dla innych funkcji jak addEventListener
Jakie są sposoby aby uruchomić kod JS kiedy strona się załaduje?
- window.onload = function() {} - Funkcja zostanie wywołane po załadowaniu całej strony z css i obrazkami
- document.onload = function()
Będzie wywołane gdy drzewo DOM będzie gotowe, ale nie zostaną załadowane obrazki i css - <body> - Działa tak samo jak window.onload
</body>
Czym jest metoda freeze()? Dlaczego się używa? Jak wykryć że obiekt jest frozen?
Metoda freeze() może być używana na obiekcie aby uniemożliwić jego zmianę np dodawanie, usuwanie właściwości, zmianę konfiguracji, emumeracji czy możliwości zapisu obiektu.
Dlaczego się używa?
Sprawia że obiekty są niezmienne
W programowaniu niektóre elementy API powinny być niezmienne, czyli bez możliwości modyfikacji.
Jak wykryć, że obiekt jest frozen
Object.isFrozen()
Jak wykryć, że JS jest włączony na stronie? Jak wykryć preferencje języka?
Wystarczy użyć taga noscript, którego zawartość jest prezentowana użytkownikowi gdy JS jest wyłączony <noscript> </noscript>
var language = navigator.Languages && navigator.Languages[0] //Chrome Firefox ||
navigator.Language //Wszystkie przeglądarki || navigator.userLanguage //IE <= 10
Czym jest parametr REST? Czym jest operator SPREAD?
Parametr REST możwemy użyć w funkcji do pobrania wszystkich przekazanych argumentów do funkcji. Został dodany w ES6
Operator SPREAD pozwala na rozbicie tablic, obiektów, stringów na pojedyncze wartości, elementy
Co robi funkcja Object.is()
Sprawdza czy dwie podane wartości są takie same czy nie
console.log(Object.is([] , [] ) ); //false bo różne referencje
console.log(Object.is(window, window) // true. Te same referencje
Jak uzyskać pary kluczy i wartości właściwości, które są enumerable? Jaka jest różnica między tym a Object.values
for( let [key,value] of Object.entries(obj)) {}
Obiekt values zwraca wyłącznie tablicę wartości
Jak uzyskać listę kluczy obiektu?
Jak uzyskać listę bezpośrednich właściwości obiektu?
for(let key of Object.keys(obj)){}
console.log(Object.getOwnPropertyNames(obj));
Jak zakodować i zdekodować adres url?
var uri = “https://strona.com/?search=Ogonki śćłnę i inne”;
var encoded = encodeURI(uri);
let decoded = decodeURI(encoded);
Dlaczego warto używać obfuscation - zaciemnianie kodu? Czym jest minimalizacja kodu - minification? Jakie są przykładowe programy do minimalizacji kodu JS?
Obfuscation jest to proces polegający na zamianę nazw zmiennych, funkcji, obiektów na prostsze nazwy i wraz z innymi operacjami utrudniającymi kod sprawiają, że zajmuje on mniej miejsca przez co strona szybciej się wczytuje.
Jest to proces polegający na usunięciu wszystkich niepotrzebnych znaków jak nadmiarowe spacje, białe znaki, komentarze, długie nazwy zmiennych itd. Wszystko co nie zmienia funkcjonalności kodu, ale zmniejszy jego rozmiar
jsmin, Google Closure Compiler, uglifyJS2, javascript-minifier.com
Jaka jest różnica między wewnątrznym a zewnętrznym kodem JS? Jak skonwertować znak stringa na kod ASCII? Jaka jest różnica pomiędzy parametrem a argumentem funkcji?
Wewnętrzny kod jest zdefiniowany pomiędzy tagami
Zewnętrzny kod jest zdefiniowany w oddzielnym pliku .js
“test”.charCodeAt(0)
Parametr określa nazwę zmiennej przekazanej do funkcji w jej definicji. Argument to zmienna przekazywana do funkcji podczas jej wywołania
Jak połączyć jedną lub kilka tablic? Czym jest funkcja some w tablicy?
arr1.concat(arr2,arr3);
Funkcja some służy do przeprowadzania testu czy jakiś element tablicy spełnia warunek przekazanej funkcji
arr1.some( (el) => el === 2 ));
Jak ograniczyć liczbę zmiennoprzecinkową do określonej liczny miejsc po przecinku? Co da negacja tablicy?
console.log(v.toFixed(1));
Negacja tablicy skończy się wartością false, ponieważ uznawana jest za truthly value więc konwersja na boolean da true, a negacja odwróci na wartość false
Jak stworzyć specyficzną ilość kopii w stringu? Jak można strimować początek i koniec stringa?
let str = “Test”.repeat(3)
console.log(“ test “.trimLeft() ) “test “
console.log(“ test “.trimStart() ) “test “
console.log(“ test “.trimRight() ) “
test”
console.log(“ test “.trimEnd() ) “
test”
Czym jest engine V8? Dlaczego nazywamy JS dynamicznym/ typowanym językiem? Jak stworzyć nieskończoną pętlę?
Engine V8 jest projektem open-source szybkiego enginu JS napisanego w C++, który używany jest w Chrome.
Ponieważ zmienne nie mają jasno określonego typu, który maja przechowywać. Każda zmienna prócz const może w dowolnej chwili mieć przypisaną dowolną wartość z dowolnym typem
for(;;){}
while(true){}