Často kladené otázky a odpovědi v JavaScriptovém rozhovoru

Mít JavaScript ve svém portfoliu zvyšuje šance na získání role vývojáře softwaru. To znamená, že se podívejme na často kladené otázky týkající se rozhovoru s JavaScriptem.

JavaScript je jedním z nejpoužívanějších jazyků ve vývoji webových aplikací. Nyní se používá k vývoji téměř všech typů aplikací.

Než se pustíme do otázek na pohovoru, podívejme se na výhody učení JavaScriptu.

JavaScript je lehký, interpretovaný nebo kompilovaný programovací jazyk just-in-time. Je to jeden ze základních jazyků celosvětové sítě. Znáte další dva základní jazyky www. Raději je vyhledejte, pokud ne.

JavaScript je vytvořen hlavně pro web. Ale to už není jen pro web. S pomocí prostředí jako Node, Deno atd.. jej můžeme provozovat téměř na jakékoli platformě.

Pojďme se podívat na některé jeho výhody.

Výhody JavaScriptu

  • Začít je snadné. Můžete se to naučit i bez znalosti kódování.
  • Velká komunita kolem něj. Pokud někde uvíznete, dostanete veškerou pomoc, kterou chcete.
  • Existuje mnoho knihoven/rámců sestavených pomocí JavaScriptu, což pomáhá rychleji vyvíjet aplikace.
  • Umíme vyvíjet frontend, backend, android, iOS atd., aplikace s JavaScriptem. Můžeme s ním vytvořit téměř jakýkoli typ aplikace. Při vývoji webu je však robustnější.
  • Jaké jsou datové typy v JavaScriptu?

    Datové typy se používají k ukládání různých typů dat. Datové typy se budou lišit od jednoho programovacího jazyka k druhému. V JavaScriptu máme 8 datových typů. Podívejme se na ně jednoho po druhém.

    • Číslo
    • Tětiva
    • Boolean
    • Nedefinováno
    • Nula
    • BigInt
    • Symbol
    • Objekt

    Všechny datové typy kromě Object se nazývají primitivní hodnoty. A jsou neměnné.

    Jaké jsou vestavěné metody v JavaScriptu?

    Vestavěné metody v JavaScriptu se pro každý datový typ liší. K těmto vestavěným metodám můžeme přistupovat pomocí příslušného datového typu. Podívejme se na některé vestavěné metody pro různé datové typy a datové struktury.

  • Číslo
  • Tětiva
    • na malá písmena
    • začíná s
    • chartAt
  • Pole
  • Pro každý datový typ existuje mnoho vestavěných metod. Můžete zkontrolovat odkazy pro všechny vestavěné metody různých datových typů a datových struktur.

    Jak vytvořit pole v JavaScriptu?

    Pole jsou jednou ze základních datových struktur v JavaScriptu. Pole mohou obsahovat jakýkoli typ dat, protože JavaScript je dynamický. Podívejme se, jak vytvořit pole v JavaScriptu.

    Pole můžeme vytvořit pomocí hranatých závorek[]. Vytváření objektů je přímočaré a rychlé

    // Empty array
    const arr = [];
    
    // Array with some random values
    const randomArr = [1, "One", true];
    
    console.log(arr, randomArr);

    Pole můžeme vytvořit pomocí konstruktoru Array. Lidé zřídka používají konstruktor k vytváření polí v obecných projektech.

    // Empty array
    const arr = new Array();
    
    // Array with some random values
    const randomArr = new Array(1, "One", true);
    
    console.log(arr, randomArr);

    Pole JavaScriptu jsou proměnlivá, tj. po vytvoření je můžeme upravit, jak chceme.

    Jak vytvořit objekt v JavaScriptu?

    Kromě pole je objekt další základní datovou strukturou v JavaScriptu. Objekty používají ukládat páry klíč-hodnota. Klíč musí být neměnná hodnota, zatímco hodnota může být jakákoli. Podívejme se, jak vytvářet objekty v JavaScriptu.

    Objekty můžeme vytvářet pomocí složených závorek {}. Vytváření objektů je přímočaré a rychlé.

    // Empty object
    const object = {};
    
    // Object with some random values
    const randomObject = { 1: 2, one: "Two", true: false };
    
    console.log(object, randomObject);

    Objekty můžeme vytvářet pomocí konstruktoru Object. Lidé to zřídka používají v obecných projektech.

    // Empty object
    const object = new Object();
    
    // Object with some random values
    const randomObject = new Object();
    randomObject[1] = 2;
    randomObject["one"] = "Two";
    randomObject[true] = false;
    
    console.log(object, randomObject);

    Objekty JavaScriptu jsou proměnlivé, tj. můžeme je po vytvoření upravit, jak vidíte ve 2. příkladu.

    Jak ladíte kód JavaScript?

    Ladění kódu není přímočaré. A liší se to od jednoho programovacího jazyka k druhému, od jednoho projektu k druhému atd..; podívejme se na běžné věci používané k ladění JavaScriptu.

    1. Logování

    K identifikaci chyby můžeme použít příkazy console.log na více místech v našem kódu. Kód přestane spouštět další řádky kódu, když se na předchozím řádku vyskytne chyba.

    Protokolování je jednou ze starých metod ladění, která je do značné míry účinná pro malé projekty. Je to běžná technika ladění pro jakýkoli programovací jazyk.

    2. Nástroje pro vývojáře

    JavaScript se většinou používá pro vývoj webových aplikací. Takže téměř všechny prohlížeče nyní mají vývojářské nástroje, které pomáhají ladit kód JavaScript.

    Jednou z nejpoužívanějších metod ladění je nastavení bodů přerušení ve vývojářských nástrojích. Body přerušení zastaví provádění JavaScriptu a poskytují veškeré informace o aktuálním provádění.

    Můžeme nastavit více bodů přerušení kolem místa, kde dochází k chybám, a zjistit, co to způsobuje. Je to nejefektivnější způsob ladění webových aplikací JavaScript.

    3. IDE

    K ladění JavaScriptu můžeme použít IDE. VS Code podporuje ladění pomocí bodů přerušení. Funkce ladění se může lišit v závislosti na IDE, které používáte. Většina IDE však tuto funkci bude mít.

      Locationbar³ Umožňuje kliknutí na každý segment v URL [Firefox]

    Jak přidat kód JavaScript do souboru HTML?

    Soubor JavaScript HTML můžeme přidat pomocí značky script. Můžete zkontrolovat příklad níže.

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>etechblog.cz</title>
      </head>
      <body>
        <h1>etechblog.cz</h1>
    
        <script>
          // JavaScript code goes here
          console.log("This is JavaScript code");
        </script>
      </body>
    </html>

    Co jsou cookies?

    Cookies jsou páry klíč-hodnota používané k ukládání malých informací. Informace může být jakákoli. Můžeme nastavit dobu vypršení platnosti souborů cookie, které budou po uplynutí doby platnosti smazány. Ty se široce používají k ukládání informací o uživatelích.

    Soubory cookie nebudou vymazány, i když stránku obnovíme, dokud je nesmažeme nebo nevyprší jejich platnost. Soubory cookie libovolné webové aplikace/webové stránky můžete zkontrolovat v libovolném prohlížeči otevřením nástrojů pro vývojáře.

    Soubor cookie můžeme číst v JavaScriptu pomocí document.cookie. Vrátí všechny soubory cookie, které jsme vytvořili.

    console.log("All cookies", document.cookie);

    Pokud nejsou žádné soubory cookie, vrátí prázdný řetězec.

    Soubory cookie můžeme vytvořit nastavením páru klíč–hodnota na document.cookie. Podívejme se na příklad.

    document.cookie = "one=One;";

    Ve výše uvedené syntaxi je klíč cookie one a One jeho hodnota. Do cookie můžeme přidat další atributy jako doména, cesta, expirace atd.; každý z nich by měl být oddělen středníkem (;). Všechny atributy jsou volitelné.

    Podívejme se na příklad s atributy.

    document.cookie = "one=One;expires=Jan 31 2023;path=/;";

    Do výše uvedeného kódu jsme přidali datum vypršení platnosti a cestu k cookie. Pokud není uvedeno datum vypršení platnosti, bude cookie po relaci smazána. Výchozí cesta bude cesta k souboru. Formát data expirace by měl být v GMT.

    Podívejme se, jak vytvořit více souborů cookie.

    document.cookie = "one=One;expires=Jan 31 2023;path=/;";
    document.cookie = "two=Two;expires=Jan 31 2023;path=/;";
    document.cookie = "three=Three;expires=Jan 31 2023;path=/;";

    Soubory cookie nebudou přepsány, pokud se klíč nebo cesta při nastavování více souborů cookie liší. Pokud jsou klíč a cesta stejné, přepíše předchozí cookie. Podívejte se na níže uvedený příklad, který přepíše předchozí nastavený soubor cookie.

    document.cookie = "one=One;expires=Jan 31 2023;path=/;";
    document.cookie = "one=Two;path=/;";

    Ze souboru cookie jsme odstranili datum vypršení platnosti a změnili hodnotu.

    Při testování kódu, aby správně fungoval, použijte datum vypršení platnosti jako budoucí datum. Pokud zachováte stejné datum 31. ledna 2023 i po 31. lednu 2023, soubory cookie se nevytvoří.

    Viděli jsme, jak vytvářet a aktualizovat soubory cookie. Podívejme se, jak smazat soubory cookie.

    Smazání cookies je snadné. Stačí změnit datum vypršení platnosti souboru cookie na jakékoli minulé datum. Zkontrolujte příklad níže.

    // Creating cookies
    document.cookie = "one=One;expires=Jan 31 2023;path=/;";
    document.cookie = "two=Two;expires=Jan 31 2023;path=/;";
    document.cookie = "three=Three;expires=Jan 31 2023;path=/;";
    
    // Deleting the last cookie
    document.cookie = "three=Three;expires=Jan 1 2023;path=/;";

    Poslední soubor cookie v souborech cookie nenajdete, protože je smazán na posledním řádku kódu. To je vše pro mini návod na sušenky.

    Jaké jsou různé rámce JavaScriptu?

    Existuje mnoho JavaScriptových frameworků. React, Vue, Angular, atd., pro vývoj uživatelského rozhraní. Express, Koa, Nest atd. pro vývoj na straně serveru. NextJS, Gatsby atd., pro generování statického webu. React Native, Ionic, atd., pro vývoj mobilních aplikací. Zmínili jsme zde některé rámce JavaScriptu. Můžete najít více rámců, jejichž prozkoumání zabere hodně času. Prozkoumejte je, když je potřebujete.

    Uzávěry v JavaScriptu

    Uzávěr je funkce spojená se svým lexikálním rozsahem a nadřazeným lexikálním prostředím. Díky uzavírkám máme přístup k datům vnějšího rozsahu. Uzávěry se tvoří při vytváření funkcí.

    function outer() {
      const a = 1;
      function inner() {
        // We can access all the data from the outer function scope here
        // The data will be available even if we execute this function outside the outer function 
        // as inners' closure formed while creating it
        console.log("Accessing a inside inner", a);
      }
      return inner;
    }
    
    const innerFn = outer();
    innerFn();

    Uzávěry jsou široce používány v aplikacích JavaScript. Možná jste je použili dříve, aniž byste si uvědomili, že se jedná o uzávěry. O uzavírkách se toho můžete dozvědět mnohem víc. Ujistěte se, že jste se tento koncept úplně naučili.

    Zvednutí v JavaScriptu

    Zvednutí je proces v JavaScriptu, kde se deklarace proměnných, funkcí a tříd přesune na vrchol rozsahu před spuštěním kódu.

    // Accessing `name` before declaring
    console.log(name);
    
    // Declaring and initializing the `name`
    var name = "etechblog.cz";

    Pokud spustíte výše uvedený kód, neuvidíte žádnou chybu. Ale ve většině jazyků se zobrazí chyba. Výstup bude nedefinovaný, protože zvedání pouze přesune deklarace nahoru a inicializuje je až na řádku číslo 3.

    Změňte var na let nebo const následovně a spusťte kód znovu.

    // Accessing `name` before declaring
    console.log(name);
    
    // Declaring and initializing the `name`
    const name = "etechblog.cz";

    Nyní se zobrazí referenční chyba, která říká, že před inicializací proměnné nemůžeme přistupovat.

    ReferenceError: Cannot access 'name' before initialization

    Zde jsou tedy let a const představeny v ES6, ke kterým nelze přistupovat před inicializací, jak naznačuje chyba. Je to proto, že proměnné deklarované pomocí let nebo const budou v časové mrtvé zóně (TDZ), dokud nebude řádek inicializován. Nemáme přístup k proměnným z TDZ.

    Curry v JavaScriptu

    Currying je technika pro převod funkcí s mnoha parametry na méně parametrů s více volatelnými. S ním můžeme převést funkci callable add(a, b, c, d) na add(a)(b)(c)(d) callable. Podívejme se na příklad, jak na to.

    function getCurryCallback(callback) {
      return function (a) {
        return function (b) {
          return function (c) {
            return function (d) {
              return callback(a, b, c, d);
            };
          };
        };
      };
    }
    
    function add(a, b, c, d) {
      return a + b + c + d;
    }
    
    const curriedAdd = getCurryCallback(add);
    
    // Calling the curriedAdd
    console.log(curriedAdd(1)(2)(3)(4));

    Můžeme zobecnit funkci getCurryCallback, která bude použita pro různé funkce k převodu na callables currying. Další podrobnosti o JavaScriptu naleznete v části Informace o JavaScriptu.

    Rozdíl mezi dokumentem a oknem

    Okno je nejvyšší objekt v prohlížeči. Obsahuje všechny informace o okně prohlížeče, jako je historie, poloha, navigátor atd.; je globálně dostupný v JavaScriptu. Můžeme jej použít přímo v našem kódu bez jakýchkoli importů. K vlastnostem a metodám objektu okna můžeme přistupovat bez okna.

    Dokument je součástí objektu okna. Veškeré HTML načtené na webové stránce se převede na objekt dokumentu. Objekt dokumentu odkazuje na speciální prvek HTMLDocument, který bude mít jiné vlastnosti a metody jako všechny prvky HTML.

      Top 9 nejlepších GPS trackerů

    Okno objekt představuje okno prohlížeče a dokument představuje dokument HTML načtený v tomto okně prohlížeče.

    Rozdíl mezi klientskou a serverovou stranou

    Klientská strana označuje koncového uživatele používajícího aplikaci. Strana serveru odkazuje na webový server, kde je aplikace nasazena.

    V terminologii frontendu můžeme říci prohlížeč na počítačích uživatelů jako stranu klienta a cloudové služby jako stranu serveru.

    Rozdíl mezi innerHTML a innerText

    Vnitřní HTML i innerText jsou vlastnostmi prvků HTML. Pomocí těchto vlastností můžeme změnit obsah elementu HTML.

    Řetězec HTML můžeme přiřadit innerHTML vlastnosti vykreslené jako normální HTML. Zkontrolujte níže uvedený příklad.

    const titleEl = document.getElementById("title");
    
    titleEl.innerHTML = '<span style="color:orange;">etechblog.cz</span>';

    Přidejte jeden prvek s názvem id do svého HTML a přidejte výše uvedený skript do souboru JavaScript. Spusťte kód a podívejte se na výstup. Budete etechblog.cz v oranžové barvě. A pokud prvek zkontrolujete, bude uvnitř značky span. Vnitřní HTML tedy vezme řetězec HTML a vykreslí jej jako normální HTML.

    Vnitřní text na druhé straně vezme normální řetězec a vykreslí ho tak, jak je. Nevykreslí žádný HTML jako innerHTML. Změňte innerHTML na innerText ve výše uvedeném kódu a zkontrolujte výstup.

    const titleEl = document.getElementById("title");
    
    titleEl.innerText="<span style="color:orange;">etechblog.cz</span>";

    Nyní uvidíte přesný řetězec, který jsme uvedli na webové stránce.

    Rozdíl mezi let a var

    Klíčová slova let a var se používají k vytváření proměnných v JavaScriptu. Klíčové slovo let je zavedeno v ES6.

    Let je omezený na blok a var je omezený na funkce.

    {
      let a = 2;
      console.log("Inside block", a);
    }
    console.log("Outside block", a);

    Spusťte výše uvedený kód. Na posledním řádku se zobrazí chyba, protože nemůžeme přistupovat k bloku mimo blok, protože je omezen na blok. Nyní jej změňte na var a spusťte jej znovu.

    {
      var a = 2;
      console.log("Inside block", a);
    }
    console.log("Outside block", a);

    Nedostanete žádnou chybu, protože můžeme přistupovat i k proměnné a mimo blok. Nyní nahradíme blok funkcí.

    function sample() {
      var a = 2;
      console.log("Inside function", a);
    }
    sample();
    console.log("Outside function", a);

    Pokud spustíte výše uvedený kód, dostanete referenční chybu, protože nemůžeme přistupovat k var a it mimo funkci, protože je omezena na funkci.

    Můžeme znovu deklarovat proměnné pomocí klíčového slova var, ale nemůžeme znovu deklarovat proměnné pomocí klíčového slova let. Podívejme se na příklad.

    var a = "etechblog.cz";
    var a = "Chandan";
    console.log(a);
    let a = "etechblog.cz";
    let a = "Chandan";
    console.log(a);

    První část kódu nevyvolá žádnou chybu a hodnota a bude změněna na poslední přiřazenou hodnotu. 2. část kódu vyvolá chybu, protože nemůžeme znovu deklarovat proměnné pomocí let.

    Rozdíl mezi úložištěm relace a místním úložištěm

    Úložiště relací a místní úložiště se používají k ukládání informací o počítačích uživatelů, ke kterým lze přistupovat bez internetu. Páry klíč-hodnota můžeme uložit jak do úložiště relace, tak do místního úložiště. Pokud zadáte jakýkoli jiný datový typ nebo datovou strukturu, klíč i hodnota budou převedeny na řetězce.

    Úložiště relace bude vymazáno po skončení relace (po zavření prohlížeče). Úložiště polohy nebude vymazáno, dokud jej nevymažeme.

    Pomocí objektů sessionStorage a localStorage můžeme přistupovat, aktualizovat a odstraňovat úložiště relace a úložiště umístění.

    Co je NaN v JavaScriptu?

    NaN je zkráceno jako Not-a-Number. Znamená to, že něco není v JavaScriptu legální/platné číslo. Existují některé případy, kdy získáme NaN jako výstup jako 0/0, nedefinováno * 2, 1 + nedefinováno, null * nedefinováno atd.,

    Co je lexikální rozsah?

    Lexikální rozsah odkazuje na přístup k proměnným z rozsahu jejich rodičů. Řekněme, že máme funkci se dvěma vnitřními funkcemi. Nejvnitřnější funkce má přístup k proměnným rozsahu svých dvou nadřazených funkcí. Podobně může funkce 2. úrovně přistupovat k nejvzdálenějšímu rozsahu funkcí. Podívejme se na to na příkladu.

    function outermost() {
      let a = 1;
      console.log(a);
      function middle() {
        let b = 2;
        // `a` are accessible here
        console.log(a, b);
        function innermost() {
          let c = 3;
          // both `a` and `b` are accessible here
          console.log(a, b, c);
        }
        innermost();
      }
      middle();
    }
    outermost();

    JavaScript používá řetězec rozsahu k nalezení proměnné, když k ní přistupujeme někde v kódu. Nejprve zkontroluje proměnnou v aktuálním rozsahu a poté nadřazený rozsah až do globálního rozsahu.

    Co je předáno hodnotou a předáno odkazem?

    Předání hodnotou a předání odkazem jsou dva způsoby, jak předat argumenty funkci v JavaScriptu.

    Pass by value: vytvoří kopii původních dat a předá je funkci. Takže když provedeme nějaké změny ve funkci, neovlivní to původní data. Zkontrolujte níže uvedený příklad.

    function sample(a) {
      // changing the value of `a`
      a = 5;
      console.log("Inside function", a);
    }
    let a = 3;
    sample(a);
    console.log("Outside function", a);

    Uvidíte, že původní hodnota a se nezmění, i když jsme ji ve funkci změnili.

    Předat odkazem: předá funkci odkaz na data. Takže když provedeme nějaké změny ve funkci, změní se také původní data.

    function sample(arr) {
      // adding a new value to the array
      arr.push(3);
      console.log("Inside function", arr);
    }
    let arr = [1, 2];
    sample(arr);
    console.log("Outside function", arr);

    Uvidíte, že původní hodnota arr se změní, když ji změníme uvnitř funkce.

    Poznámka: Všechny primitivní datové typy jsou předávány hodnotou a neprimitivní jsou předávány odkazem.

    Co je zapamatování?

    Memoizace je technika, která ukládá vypočítané hodnoty do mezipaměti a používá je, když je znovu potřebujeme, aniž bychom je museli znovu počítat. Pokud je výpočet velmi náročný, urychlí provádění kódu. Existuje kompromis s úložištěm, který ve srovnání s časem není velký problém.

    const memo = {};
    function add(a, b) {
      const key = `${a}-${b}`;
    
      // checking whether we computed the value already or not
      if (memo[key]) {
        console.log("Not computing again");
        return memo[key];
      }
    
      // adding the newly computed value to cache
      // here cache is a simple global object
      memo[key] = a + b;
      return memo[key];
    }
    
    console.log(add(1, 2));
    console.log(add(2, 3));
    console.log(add(1, 2));

    Je to jednoduchý příklad, který demonstruje zapamatování. Zde není sčítání dvou čísel náročným výpočtem. Je to jen pro demo.

    Jaký je zbytek parametru?

    Parametr rest se používá ke shromáždění všech zbývajících parametrů ve funkci. Řekněme, že máme funkci, která bude akceptovat minimálně 2 argumenty a může akceptovat maximálně libovolný počet parametrů. Protože nemáme maximální počet argumentů, můžeme shromáždit první 2 parametry s normálními proměnnými a všechny ostatní s parametrem zbytek pomocí operátoru rest.

    function sample(a, b, ...rest) {
      console.log("Rest parameter", rest);
    }
    
    sample(1, 2, 3, 4, 5);

    Parametr rest bude pole posledních tří argumentů ve výše uvedeném příkladu. Díky tomu můžeme mít pro funkci libovolný počet parametrů.

      Jak odblokovat neshody ve škole

    Jedna funkce může mít pouze jeden klidový parametr. A parametr rest by měl být poslední v pořadí parametrů.

    Co je destrukce objektů?

    Destrukce objektu se používá k přístupu k proměnným z objektu a jejich přiřazení k proměnným se stejnými názvy jako klíče objektu. Podívejme se na příklad.

    const object = { a: 1, b: 2, c: 3 };
    
    // Object destructuring
    const { a, b, c } = object;
    
    // Now, a, b, c will be used as normal variables
    console.log(a, b, c);

    Proměnné destrukturovaných proměnných můžeme změnit ve stejném řádku následovně.

    const object = { a: 1, b: 2, c: 3 };
    
    // Changing the names of `a` and `b`
    const { a: changedA, b: changedB, c } = object;
    
    // Now, changedA, changedB, c will be used as normal variables
    console.log(changedA, changedB, c);

    Co je destrukce pole?

    Destrukturování pole se používá pro přístup k proměnným z pole a jejich přiřazení k proměnným. Podívejme se na příklad.

    const array = [1, 2, 3];
    
    // Array destructuring
    // It's based on the index of the array
    const [a, b, c] = array;
    
    // Now, we can use a, b, c as normal variables
    console.log(a, b, c);

    Co je zachycování událostí a probublávání událostí?

    Zachycování událostí a probublávání událostí jsou dva způsoby šíření událostí v HTML DOM. Řekněme, že existují dva prvky HTML, jeden uvnitř druhého. A na vnitřním prvku dojde k události. Nyní režim šíření událostí rozhodne o pořadí provádění těchto událostí.

    Probublávání události: nejprve spustí obslužnou rutinu události na prvku, poté na jeho prvku a poté se dostane až k nejvyššímu prvku. Toto je výchozí chování všech událostí.

    Zachycování událostí: musíme specifikovat v případě, že potřebujeme použít tento typ šíření událostí. Můžeme jej specifikovat při přidávání posluchače události. Události se spouštějí v následujícím pořadí, pokud máme povoleno zachycování událostí.

  • Události se začnou spouštět od nejvyššího prvku k cílovému prvku až dolů.
  • Událost na cílovém prvku bude provedena znovu.
  • K šíření události bublání bude znovu docházet, dokud nebude nejvyšší prvek nahoře.
  • Šíření události můžeme zastavit voláním metody event.stopPropogation v obslužné rutině události.

    Jaké jsou sliby v JavaScriptu?

    Objekt Promise the se používá pro asynchronní operace, které se v budoucnu dokončí se stavem úspěchu nebo selhání.

    Slib může být v jednom z následujících stavů.

  • čekající – když operace stále probíhá.
  • splněno – když je operace úspěšně dokončena. Budeme mít výsledky (pokud nějaké budou) ve stavu úspěchu.
  • zamítnuto – když je operace dokončena s poruchou. Budeme mít důvod (chybu), proč to selhalo.
  • Podívejme se na dva příklady případů úspěchu a selhání.

    // Promise which will complete successfully
    const successPromise = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve({ message: "Completed successfully" });
      }, 300);
    });
    successPromise
      .then((data) => {
        console.log(data);
      })
      .catch((error) => {
        console.log(error);
      });
    
    // Promise which will complete with failure state
    const failurePromise = new Promise((resolve, reject) => {
      setTimeout(() => {
        reject(new Error("Failing the promise for testing"));
      }, 300);
    });
    failurePromise
      .then((data) => {
        console.log(data);
      })
      .catch((error) => {
        console.log(error);
      });

    V případě potřeby můžete mít více než jeden a pak řetězení. Dříve vrácená data budou přijata při dalším zpětném volání.

    Vysvětlete různé typy rozsahu v JavaScriptu

    V JavaScriptu existují dva typy rozsahu. Globální působnost a lokální působnost.

    Možná jste slyšeli o rozsahu funkcí a rozsahu bloků. Jsou to místní rozsahy pro var a let, const.

    Co jsou to samovolné funkce?

    Samovolné funkce jsou bezejmenné funkce, které budou provedeny ihned po vytvoření. Podívejme se na několik příkladů.

    // Without any parameters
    (function sayHello() {
      console.log("Hello, World!");
    })();
    
    // With parameters
    (function add(a, b) {
      console.log("Sum", a + b);
    })(1, 2);

    Můžeme dokonce předat argumenty samovolným funkcím, jak jste viděli v příkladu.

    Jaké jsou funkce šipek?

    Funkce šipky je syntaktický cukr k normální funkci s určitými změnami. V běžných případech se chovají jako běžné funkce. Funkce šipek se hodí, když musíme mít zpětná volání. Podívejme se na jeho syntaxi.

    // arrow functions will return by default if it doesn't have any brackets
    let add = (a, b) => a + b;
    
    console.log(add(1, 2));

    Mezi funkcemi šipek a normálními funkcemi jsou určité rozdíly.

    • Funkce šipek nemají vlastní tuto vazbu. Klíčové slovo this uvnitř funkce šipky odkazuje na její nadřazený rozsah this.
    • Funkce šipek nelze použít jako funkce konstruktoru

    Co jsou zpětná volání?

    Zpětné volání je funkce, která je předána jiné funkci, která je vyvolána uvnitř této funkce. Používání zpětných volání je v JavaScriptu běžná věc. Podívejme se na příklad.

    function sample(a, b, callback) {
      const result = a + b;
      callback(result);
    }
    
    function finished(result) {
      console.log("Finished with", result);
    }
    
    sample(1, 2, finished);

    Dokončená funkce je předána jako zpětné volání vzorku. Hotová funkce je vyvolána s výsledkem po provedení nějaké akce. Využití zpětných volání uvidíte většinou v asynchronních operacích, jako jsou sliby, setTimeout atd..,

    Jaké jsou různé typy chyb?

    Pojďme zkontrolovat některé chyby v JavaScriptu.

    ReferenceError: k této chybě dojde, pokud je proměnná, ke které přistupujeme, dostupná.

    TypeError: JavaScript vyvolá tuto chybu, pokud se chyba neshoduje s jinými typy chyb. Objeví se také, když se pokusíme provést akci, která není kompatibilní s daty.

    SyntaxError: k této chybě dojde, pokud syntaxe JavaScriptu není správná.

    Existují také některé další typy chyb. Toto jsou však běžné typy chyb v JavaScriptu.

    Jaké jsou různé rozsahy proměnných v JavaScriptu?

    V JavaScriptu existují dva rozsahy proměnných. Proměnné deklarované pomocí klíčového slova var budou mít rozsah funkcí a proměnné deklarované pomocí let a const budou mít rozsah bloku.

    Další podrobnosti o rozsahu těchto proměnných naleznete v 17. otázce.

    Co jsou escape znaky v JavaScriptu?

    Zpětné lomítko je znak escape v JavaScriptu. Používá se k tisku některých speciálních znaků, které obecně tisknout nemůžeme. Řekněme, že chceme vytisknout apostrof (‚) uvnitř řetězce, což nemůžeme normálně udělat, protože řetězec bude končit na druhém apostrofu. V takovém případě použijeme znak escape, abychom zabránili ukončení řetězce v tomto bodě.

    const message="Hi, I"m etechblog.cz';
    console.log(message);

    Výše uvedeného výstupu můžeme dosáhnout bez použití escape znaku nahrazením vnějších jednoduchých apostrofů dvojitými apostrofy. Ale je to jen příklad toho, jak použít únikovou postavu. Existují další znaky, pro které nutně potřebujeme únikový znak jako n, t, atd..,

    Co jsou BOM a DOM?

    Objektový model prohlížeče (BOM): všechny prohlížeče mají kusovník představující aktuální okno prohlížeče. Obsahuje náš nejvyšší objekt okna, který se používá k manipulaci s oknem prohlížeče.

    Document Object Model (DOM): prohlížeče vytvářejí DOM, když je HTML načteno ve stromové struktuře. S prvky HTML můžeme manipulovat pomocí DOM API.

    Co je objekt obrazovky?

    Objekt obrazovky je jednou z vlastností objektu globálního okna. Obsahuje různé vlastnosti obrazovky, na které se vykresluje aktuální okno prohlížeče. Některé z vlastností jsou šířka, výška, orientace, pixelDepth atd.,

    Závěr

    Ke všem výše uvedeným otázkám mohou existovat doplňující otázky. Takže si musíte připravit koncepty kolem všech výše uvedených otázek.

    Můžete také prozkoumat některé často kladené otázky a odpovědi na rozhovory s Java.

    Příjemné učení 🙂