Ofte stillede JavaScript-interviewspørgsmål og -svar

At have JavaScript i din portefølje øger chancerne for at få en rolle som softwareudvikler. Når det er sagt, lad os se de ofte stillede JavaScript-interviewspørgsmål.

JavaScript er et af de mest brugte sprog i webudvikling. Det bruges til at udvikle næsten enhver form for applikation nu.

Før vi springer ind i interviewspørgsmålene, lad os se fordelene ved at lære JavaScript.

JavaScript er et letvægts, fortolket eller just-in-time kompileret programmeringssprog. Det er et af kernesprogene på world wide web. Du kender de to andre kernesprog på www. Du må hellere søge efter dem, hvis du ikke gør det.

JavaScript er primært lavet til nettet. Men det er ikke kun til nettet nu. Ved hjælp af miljøer som Node, Deno osv.. kan vi køre det på næsten enhver platform.

Lad os se nogle fordele ved det.

Fordele ved JavaScript

  • Nem at komme i gang med. Du kan lære det selv uden kodningsviden.
  • Stort fællesskab omkring det. Du får al den hjælp, du ønsker, hvis du sidder fast nogen steder.
  • Der er mange biblioteker/rammer, der er bygget ved hjælp af JavaScript, hvilket hjælper med at udvikle applikationer hurtigere.
  • Vi kan udvikle frontend, backend, android, iOS osv.., applikationer med JavaScript. Vi kan oprette næsten enhver form for applikation med det. Men det er mere robust i webudvikling.
  • Hvad er datatyperne i JavaScript?

    Datatyperne bruges til at gemme forskellige typer data. Datatyper vil variere fra et programmeringssprog til et andet. I JavaScript har vi 8 datatyper. Lad os se dem én efter én.

    • Nummer
    • Snor
    • Boolean
    • Udefineret
    • Nul
    • BigInt
    • Symbol
    • Objekt

    Alle datatyper undtagen Object kaldes primitive værdier. Og de er uforanderlige.

    Hvad er de indbyggede metoder i JavaScript?

    De indbyggede metoder i JavaScript er forskellige for hver datatype. Vi kan få adgang til disse indbyggede metoder ved hjælp af den respektive datatype. Lad os se nogle indbyggede metoder til forskellige datatyper og datastrukturer.

  • Nummer
  • Snor
    • til LowerCase
    • starter med
    • diagramAt
  • Array
  • Der er mange indbyggede metoder for hver datatype. Du kan tjekke referencerne for alle indbyggede metoder for forskellige datatyper og datastrukturer.

    Hvordan opretter man et array i JavaScript?

    Arrays er en af ​​kernedatastrukturerne i JavaScript. Arrays kan have enhver type data i dem, da JavaScript er dynamisk. Lad os se, hvordan du opretter arrays i JavaScript.

    Vi kan oprette et array ved hjælp af firkantede parenteser[]. Det er nemt og hurtigt at skabe objekter

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

    Vi kan oprette et array ved hjælp af Array constructor. Folk bruger sjældent konstruktøren til at skabe arrays i generelle projekter.

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

    JavaScript-arrays kan ændres, dvs. vi kan ændre dem, som vi vil, efter at have oprettet dem.

    Hvordan opretter man et objekt i JavaScript?

    Bortset fra array er objektet en anden kernedatastruktur i JavaScript. Objekter bruger lagre nøgleværdi-parrene. Nøglen skal være en uforanderlig værdi, hvorimod værdien kan være hvad som helst. Lad os se, hvordan man opretter objekter i JavaScript.

    Vi kan oprette objekter ved hjælp af krøllede parenteser {}. Det er nemt og hurtigt at skabe objekter.

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

    Vi kan oprette objekter ved hjælp af Object constructor. Folk bruger sjældent dette i generelle projekter.

    // 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);

    JavaScript-objekter kan ændres, dvs. vi kan ændre dem efter oprettelse, som du ser i det andet eksempel.

    Hvordan fejlretter du JavaScript-kode?

    Fejlretning af kode er ikke ligetil. Og det er forskelligt fra et programmeringssprog til et andet, et projekt til et andet osv..; lad os se de almindelige ting, der bruges til at fejlfinde JavaScript.

    1. Logning

    Vi kan bruge console.log-sætningerne flere steder i vores kode til at identificere fejlen. Koden stopper med at køre de næste linjer kode, når der er en fejl i den forrige linje.

    Logning er en af ​​de gamle debugging-metoder, som er temmelig effektiv til små projekter. Det er en almindelig fejlfindingsteknik for ethvert programmeringssprog.

    2. Udviklerværktøjer

    JavaScript bruges mest til at udvikle webapplikationer. Så næsten alle browsere har udviklerværktøjer nu, der hjælper med at fejlsøge JavaScript-koden.

    En af de mest brugte fejlfindingsmetoder er at indstille brudpunkter i udviklerværktøjerne. Afbrydelsespunkterne stopper udførelsen af ​​JavaScript og giver al information om udførelsen i øjeblikket.

    Vi kan indstille flere brudpunkter omkring det sted, hvor vi får fejl, og se, hvad der forårsager det. Det er den mest effektive måde at fejlfinde JavaScript-webapplikationer på.

    3. IDE’er

    Vi kan bruge IDE’erne til at fejlfinde JavaScript. VS Code understøtter fejlfinding med brudpunkter. Fejlfindingsfunktionen kan variere baseret på den IDE, du bruger. Men de fleste IDE’er vil have den funktion.

    Hvordan tilføjer man JavaScript-kode i en HTML-fil?

    Vi kan tilføje JavaScript HTML-filen ved hjælp af script-tagget. Du kan tjekke eksemplet nedenfor.

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

    Hvad er cookies?

    Cookies er nøgleværdi-par, der bruges til at gemme små oplysninger. Informationen kan være hvad som helst. Vi kan indstille udløbstiden for cookies, som slettes efter deres udløbstid. Disse bruges i vid udstrækning til at gemme brugernes oplysninger.

      Udklipsholder, der gemmer din historie og understøtter scripting

    Cookies ryddes ikke, selvom vi opdaterer siden, før vi sletter dem, eller de udløber. Du kan tjekke cookies på enhver webapp/webside i enhver browser ved at åbne udviklerværktøjerne.

    Vi kan læse cookien i JavaScript ved hjælp af document.cookie. Det vil returnere alle de cookies, vi har oprettet.

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

    Det vil returnere en tom streng, hvis der ikke er cookies.

    Vi kan oprette cookies ved at indstille nøgleværdi-parret til document.cookien. Lad os se et eksempel.

    document.cookie = "one=One;";

    I ovenstående syntaks er den ene cookie-nøgle og en dens værdi. Vi kan tilføje flere attributter til cookien som domæne, sti, udløber osv..; hver af dem skal adskilles af et semikolon (;). Alle attributter er valgfrie.

    Lad os se et eksempel med attributter.

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

    I ovenstående kode har vi tilføjet en udløbsdato og sti til cookien. Hvis udløbsdatoen ikke er angivet, slettes cookien efter sessionen. Standardstien vil være filstien. Udløbsdatoformatet skal være i GMT.

    Lad os se, hvordan du opretter flere 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=/;";

    Cookies vil ikke blive overskrevet, hvis nøglen eller stien er anderledes, mens du indstiller flere cookies. Hvis nøglen og stien er den samme, vil den overskrive den forrige cookie. Tjek nedenstående eksempel, som vil overskrive den tidligere sæt cookie.

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

    Vi har fjernet udløbsdatoen fra cookien og ændret værdien.

    Brug udløbsdatoen en fremtidig dato, når du tester koden for at den fungerer korrekt. Hvis du beholder den samme dato 31. januar 2023, selv efter den 31. januar 2023, oprettes der ikke cookies.

    Vi har set, hvordan man opretter og opdaterer cookies. Lad os se, hvordan du sletter cookies.

    Det er nemt at slette cookies. Du skal bare ændre udløbsdatoen for cookien til en hvilken som helst tidligere dato. Tjek eksemplet nedenfor.

    // 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=/;";

    Du finder ikke den sidste cookie i cookies, da den er slettet i den sidste linje i koden. Det er det for min cookies tutorial.

    Hvad er de forskellige JavaScript-rammer?

    Der er mange JavaScript-rammer derude. React, Vue, Angular osv.., til UI-udvikling. Express, Koa, Nest osv.., til udvikling på serversiden. NextJS, Gatsby, osv.., til statisk webstedsgenerering. React Native, Ionic osv.., til udvikling af mobilapps. Vi har nævnt nogle af JavaScript-rammerne her. Du kan finde flere rammer, som det vil tage meget tid at udforske. Udforsk, når du har brug for dem.

    Lukninger i JavaScript

    En lukning er en funktion bundtet med dets leksikale omfang og dets overordnede leksikalske miljø. Med lukninger kan vi få adgang til de ydre omfangsdata. Lukningerne dannes, når funktionerne oprettes.

    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();

    Lukninger er meget udbredt i JavaScript-applikationer. Du har måske brugt dem før uden at være klar over, at de er lukninger. Der er meget mere end dette at lære om lukningerne. Sørg for, at du har lært dette koncept fuldstændigt.

    Hejsning i JavaScript

    Hoisting er en proces i JavaScript, hvor erklæringen af ​​variabler, funktioner og klasser flyttes til toppen af ​​scopet, før koden eksekveres.

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

    Hvis du kører ovenstående kode, vil du ikke se nogen fejl. Men på de fleste sprog får du fejlen. Outputtet vil være udefineret, da hejsning kun flytter erklæringerne til toppen, og det vil ikke initialisere det før linje nummer 3.

    Skift var til let eller const som følger, og kør koden igen.

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

    Nu vil du få referencefejlen, der siger, at vi ikke kan få adgang til variablen før initialisering af den.

    ReferenceError: Cannot access 'name' before initialization

    Så her introduceres let og const i ES6, som ikke kan tilgås før initialisering, som fejlen antyder. Dette skyldes, at variablerne, der er erklæret med let eller const, vil være i Temporal Dead Zone (TDZ) indtil linjen, den er initialiseret. Vi kan ikke få adgang til variablerne fra TDZ.

    Curry i JavaScript

    Currying er en teknik til at konvertere funktioner med mange parametre til færre parametre med flere callables. Med den kan vi konvertere en funktion callable add(a, b, c, d) til add(a)(b)(c)(d) callable. Lad os se et eksempel på, hvordan man gør det.

    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));

    Vi kan generalisere getCurryCallback funktionen, som vil blive brugt til forskellige funktioner til at konvertere til curry callables. Du kan henvise til JavaScript Info for flere detaljer om det.

    Forskellen mellem dokument og vindue

    Vinduet er det øverste objekt i browseren. Den indeholder al information om browservinduet, som historie, placering, navigator osv..; det er globalt tilgængeligt i JavaScript. Vi kan bruge det direkte i vores kode uden nogen import. Vi kan få adgang til vinduesobjektets egenskaber og metoder uden vindue.

    Dokumentet er en del af vinduesobjektet. Al HTML indlæst på websiden konverteres til dokumentobjektet. Dokumentobjektet refererer til det specielle HTMLDocument-element, som vil have forskellige egenskaber og metoder som alle HTML-elementer.

    Vinduet, objektet repræsenterer browservinduet, og dokumentet repræsenterer HTML-dokumentet, der er indlæst i browservinduet.

      Sådan annullerer du ATT Prepaid Plan

    Forskellen mellem klient-side og server-side

    Klientsiden refererer til slutbrugeren, der bruger applikationen. Serversiden refererer til den webserver, hvor applikationen er installeret.

    I frontend-terminologien kan vi sige browser på brugernes computere som klientside og cloud-tjenester som serverside.

    Forskellen mellem innerHTML og innerText

    Både innerHTML og innerText er egenskaberne for HTML-elementer. Vi kan ændre indholdet af et HTML-element ved hjælp af disse egenskaber.

    Vi kan tildele HTML-strengen til innerHTML en egenskab gengivet som normal HTML. Tjek nedenstående eksempel.

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

    Tilføj et element med id-titlen til din HTML og tilføj ovenstående script til JavaScript-filen. Kør koden og se outputtet. Du vil toadmin.dk i orange farve. Og hvis du inspicerer elementet, vil det være inde i span-tagget. Så innerHTML vil tage HTML-strengen og gengive den som normal HTML.

    Den indre tekst på den anden side vil tage en normal streng og gengive den, som den er. Det vil ikke gengive HTML som innerHTML. Skift innerHTML til innerText i ovenstående kode og kontroller outputtet.

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

    Nu vil du se den nøjagtige streng, som vi har angivet på websiden.

    Forskellen mellem let og var

    Nøgleordene let og var bruges til at oprette variabler i JavaScript. Let nøgleordet er introduceret i ES6.

    Lejet er et blok-omfang og var er funktions-scoped.

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

    Kør ovenstående kode. Du vil få en fejl på den sidste linje, da vi ikke kan få adgang til lad a uden for blokken, fordi den er blokeret. Skift det nu til var og kør det igen.

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

    Du vil ikke få nogen fejl, da vi også kan få adgang til a-variablen uden for blokken. Lad os nu erstatte blokken med en funktion.

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

    Du vil få en referencefejl, hvis du kører ovenstående kode, da vi ikke kan få adgang til var a it uden for funktionen, fordi den er funktionsbestemt.

    Vi kan generklære variablerne ved at bruge var nøgleordet, men vi kan ikke generklære variablerne ved at bruge let nøgleordet. Lad os se et eksempel.

    var a = "toadmin.dk";
    var a = "Chandan";
    console.log(a);
    let a = "toadmin.dk";
    let a = "Chandan";
    console.log(a);

    Det første stykke kode vil ikke give nogen fejl, og værdien er a vil blive ændret til den senest tildelte værdi. Det 2. kodestykke vil give en fejl, da vi ikke kan generklære variabler ved hjælp af let.

    Forskellen mellem sessionslagring og lokal lagring

    Sessionslagringen og den lokale lagring bruges til at gemme information på brugernes computere, som kan tilgås uden internet. Vi kan gemme nøgleværdi-parrene i både sessionslagring og lokal lagring. Både nøgle og værdi vil blive konverteret til strenge, hvis du angiver en anden datatype eller datastruktur.

    Sessionslageret vil blive ryddet, når sessionen er slut (når browseren er lukket). Placeringslageret ryddes ikke, før vi rydder det.

    Vi kan få adgang til, opdatere og slette sessionslagring og lokationslagring med henholdsvis sessionStorage- og localStorage-objekter.

    Hvad er NaN i JavaScript?

    NaN er forkortet til Not-a-Number. Det repræsenterer, at noget ikke er et lovligt/gyldigt nummer i JavaScript. Der er nogle tilfælde, hvor vi får NaN som output som 0/0, udefineret * 2, 1 + udefineret, null * udefineret osv..,

    Hvad er leksikalsk omfang?

    Det leksikalske omfang refererer til adgang til variablerne fra dets forældres omfang. Lad os sige, at vi har en funktion med to indre funktioner. Den inderste funktion kan få adgang til sine to overordnede funktioners omfangsvariabler. På samme måde kan funktionen på 2. niveau få adgang til det yderste funktionsomfang. Lad os se det i et eksempel.

    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 bruger en omfangskæde til at finde variablen, når vi får adgang til den et sted i koden. Først vil den kontrollere variablen i det aktuelle omfang, og derefter det overordnede omfang indtil det globale omfang.

    Hvad er bestået af værdi og bestået af reference?

    Pass by value og pass by reference er to måder at videregive argumenterne til en funktion i JavaScript.

    Pass by value: den opretter en kopi af de originale data og sender dem til funktionen. Så når vi foretager ændringer i funktionen, vil det ikke påvirke de originale data. Tjek nedenstående eksempel.

    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);

    Du vil se, at den oprindelige værdi af a’et ikke ændres, selvom vi har ændret den inde i funktionen.

    Pass by reference: den sender referencen af ​​dataene til funktionen. Så når vi har foretaget ændringer i funktionen, vil den også ændre de originale 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);

    Du vil se, at den oprindelige værdi af arr ændres, når vi ændrer den inde i funktionen.

    Bemærk: alle primitive datatyper videregives af værdi, og ikke-primitive videregives ved reference.

    Hvad er huskeseddel?

    Memoisering er en teknik, der gemmer de beregnede værdier i caches og bruger dem, når vi har brug for dem igen uden at beregne dem igen. Det vil fremskynde udførelsen af ​​koden, hvis beregningen er meget tung. Der er en lagerafvejning, som ikke er et stort problem i forhold til tid.

    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));

    Det er et simpelt eksempel, der demonstrerer huskesind. Her er det ikke en svær beregning at tilføje to tal. Det er kun til demoen.

    Hvad er hvileparameteren?

    Restparameteren bruges til at samle alle de resterende parametre i en funktion. Lad os sige, at vi har en funktion, der vil acceptere minimum 2 argumenter og maksimalt kan acceptere et hvilket som helst antal parametre. Da vi ikke har det maksimale antal argumenter, kan vi samle de første 2 parametre med normale variable og alle andre med rest-parameteren ved hjælp af rest-operatoren.

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

    Resten parameter vil være en matrix af de sidste tre argumenter i ovenstående eksempel. Med dette kan vi have et hvilket som helst antal parametre for en funktion.

      Sådan spiller du Roblox på School Chromebook

    Én funktion kan kun have én hvileparameter. Og restparameteren skal være den sidste i rækkefølgen af ​​parametrene.

    Hvad er objektdestrukturering?

    Objektdestrukturering bruges til at få adgang til variablerne fra objektet og tildele dem til variabler med samme navne som objektnøgler. Lad os se et eksempel.

    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);

    Vi kan ændre variablerne for destrukturerede variable på samme linje som følger.

    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);

    Hvad er array-destrukturering?

    Array-destrukturering bruges til at få adgang til variablerne fra arrayet og tildele dem til variabler. Lad os se et eksempel.

    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);

    Hvad er begivenhedsfangst og begivenhedsboblende?

    Hændelsesregistrering og hændelsesbobling er to måder til hændelsesudbredelse i HTML DOM. Lad os sige, at der er to HTML-elementer, den ene inde i den anden. Og en begivenhed opstår på det indre element. Nu vil hændelsesudbredelsestilstanden bestemme rækkefølgen af ​​disse hændelsers udførelse.

    Hændelsesboblende: det kører hændelseshandleren på elementet først, derefter dets element, og så går det helt op til det øverste element. Dette er standardadfærden for alle hændelser.

    Hændelsesregistrering: vi skal specificere i tilfælde af, at vi skal bruge denne type hændelsesformidling. Vi kan angive det, mens vi tilføjer begivenhedslytteren. Hændelserne udføres i følgende rækkefølge, hvis vi har aktiveret hændelsesregistrering.

  • Hændelserne begynder at køre fra det øverste element til målelementet til nedad.
  • Hændelsen på målelementet vil blive udført igen.
  • Den boblende hændelsesforplantning vil igen forekomme, indtil det øverste element er oppe.
  • Vi kan stoppe hændelsesudbredelsen ved at kalde event.stopPropogation en metode i hændelseshandleren.

    Hvad er løfterne i JavaScript?

    Løftet objektet bruges til de asynkrone operationer, som vil fuldføre i fremtiden med en succes- eller fiaskotilstand.

    Et løfte kan være i en af ​​følgende tilstande.

  • afventer – når operationen stadig er i gang.
  • opfyldt – når operationen er gennemført. Vi vil have resultater (hvis nogen) i succestilstanden.
  • afvist – når operationen er afsluttet med en fejl. Vi vil have årsagen (fejlen), hvorfor det mislykkedes.
  • Lad os se to eksempler på succes- og fiaskosager.

    // 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);
      });

    Du kan have mere end én og derefter kæde, hvis det kræves. De tidligere returnerede data vil blive accepteret i det næste tilbagekald.

    Forklar de forskellige typer omfang i JavaScript

    Der er to typer omfang i JavaScript. Det globale omfang og det lokale omfang.

    Du har måske også hørt om funktionsomfanget og blokomfanget. De er lokale scopes for henholdsvis var og let, const.

    Hvad er selvkaldende funktioner?

    De selvpåkaldende funktioner er navnløse funktioner, som vil blive udført umiddelbart efter oprettelsen. Lad os se nogle eksempler.

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

    Vi kan endda videregive argumenterne til de selvpåkaldende funktioner, som du har set i eksemplet.

    Hvad er pilefunktioner?

    Pilfunktionen er syntaktisk sukker til den normale funktion med nogle ændringer. De opfører sig som normale funktioner i almindelige tilfælde. Pilefunktioner er nyttige, når vi skal have tilbagekald. Lad os se dens syntaks.

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

    Der er nogle forskelle mellem pilefunktionerne og normale funktioner.

    • Pilefunktioner har ikke deres egen denne binding. Dette nøgleord inde i pilfunktionen refererer til dets overordnede omfang dette.
    • Pilefunktioner kan ikke bruges som konstruktørfunktioner

    Hvad er tilbagekald?

    Et tilbagekald er en funktion, der overføres til en anden funktion, der aktiveres inde i denne funktion. Brug af tilbagekald er en almindelig ting i JavaScript. Lad os se et eksempel.

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

    Den afsluttede funktion videregives som et tilbagekald til prøven. Den færdige funktion kaldes sammen med resultatet efter at have udført en handling. Du vil se tilbagekaldsforbruget for det meste i asynkrone operationer som løfter, setTimeout osv..,

    Hvad er de forskellige typer fejl?

    Lad os tjekke nogle fejl i JavaScript.

    ReferenceError: denne fejl opstår, hvis den variabel, vi har adgang til, er tilgængelig.

    TypeError: JavaScript vil kaste denne fejl, hvis fejlen ikke stemmer overens med andre typer fejl. Det vil også forekomme, når vi forsøger at udføre en handling, som ikke er kompatibel med dataene.

    SyntaxError: denne fejl opstår, hvis JavaScript-syntaksen ikke er korrekt.

    Der er også nogle andre typer fejl. Men disse er de almindelige fejltyper i JavaScript.

    Hvad er de forskellige omfang af variabler i JavaScript?

    Der er to omfang af variabler i JavaScript. Variablerne, der er erklæret ved hjælp af nøgleordet var, vil have funktionsomfang, og variablerne, der er erklæret med let og const, vil have blokomfanget.

    Se det 17. spørgsmål for flere detaljer om disse variables omfang.

    Hvad er escape-tegn i JavaScript?

    Omvendt skråstreg er escape-tegnet i JavaScript. Det bruges til at udskrive nogle specielle tegn, som vi generelt ikke kan udskrive. Lad os sige, at vi vil udskrive apostrof (‘) inde i en streng, hvilket vi ikke kan gøre normalt, da strengen ender ved den anden apostrof. I så fald vil vi escape-tegnet for at undgå at afslutte strengen på det tidspunkt.

    const message="Hi, I"m toadmin.dk';
    console.log(message);

    Vi kan opnå ovenstående output uden at bruge escape-tegn ved at erstatte de udvendige enkelte apostroffer med dobbelte apostrof. Men det er bare et eksempel på, hvordan man bruger en flugtkarakter. Der er andre karakterer, som vi helt sikkert har brug for escape-karakterer som n, t, osv..,

    Hvad er BOM og DOM?

    Browser Object Model (BOM): alle browsere har BOM, der repræsenterer det aktuelle browservindue. Det indeholder vores øverste vinduesobjekt, som bruges til at manipulere browservinduet.

    Document Object Model (DOM): browsere opretter DOM, når HTML er indlæst i træstrukturen. Vi kan manipulere HTML-elementerne ved hjælp af DOM API.

    Hvad er et skærmobjekt?

    Skærmobjektet er en af ​​egenskaberne for det globale vinduesobjekt. Den indeholder forskellige egenskaber for skærmen, hvor det aktuelle browservindue gengives. Nogle af egenskaberne er bredde, højde, orientering, pixelDybde osv..,

    Konklusion

    Der kan være opfølgende spørgsmål til alle ovenstående spørgsmål. Så du skal forberede koncepterne omkring alle ovenstående spørgsmål.

    Du kan også udforske nogle ofte stillede Java-interviewspørgsmål og -svar.

    God læring 🙂