02/09/2023

Întrebări și răspunsuri frecvente la interviu JavaScript

Având JavaScript în portofoliu crește șansele de a obține un rol de dezvoltator de software. Acestea fiind spuse, haideți să verificăm întrebările frecvente ale interviului JavaScript.

JavaScript este unul dintre cele mai utilizate limbaje în dezvoltarea web. Este folosit pentru a dezvolta aproape orice tip de aplicație acum.

Înainte de a trece la întrebările interviului, să vedem avantajele învățării JavaScript.

JavaScript este un limbaj de programare ușor, interpretat sau compilat la timp. Este una dintre limbile de bază ale World Wide Web. Cunoașteți celelalte două limbi principale ale www. Mai bine le cauți dacă nu.

JavaScript este creat în principal pentru web. Dar nu este doar pentru web acum. Cu ajutorul unor medii precum Node, Deno etc., îl putem rula pe aproape orice platformă.

Să vedem câteva avantaje ale acestuia.

Avantajele JavaScript

  • Ușor de început. Îl poți învăța chiar și fără cunoștințe de codare.
  • Comunitate mare în jurul ei. Veți primi tot ajutorul pe care îl doriți dacă sunteți blocat oriunde.
  • Există o mulțime de biblioteci/cadre construite folosind JavaScript, ceea ce ajută la dezvoltarea mai rapidă a aplicațiilor.
  • Putem dezvolta aplicații frontend, backend, android, iOS etc., cu JavaScript. Putem crea aproape orice tip de aplicație cu el. Dar, este mai robust în dezvoltarea web.
  • Care sunt tipurile de date în JavaScript?

    Tipurile de date sunt folosite pentru a stoca diferite tipuri de date. Tipurile de date vor diferi de la un limbaj de programare la altul. În JavaScript, avem 8 tipuri de date. Să-i vedem unul câte unul.

    • Număr
    • Şir
    • boolean
    • Nedefinit
    • Nul
    • BigInt
    • Simbol
    • Obiect

    Toate tipurile de date, cu excepția obiectului, sunt numite valori primitive. Și sunt imuabile.

    Care sunt metodele încorporate în JavaScript?

    Metodele încorporate în JavaScript sunt diferite pentru fiecare tip de date. Putem accesa aceste metode încorporate folosind tipul de date respectiv. Să vedem câteva metode încorporate pentru diferite tipuri de date și structuri de date.

  • Număr
  • Şir
    • toLowerCase
    • incepe cu
    • chartAt
  • Matrice
  • Există o mulțime de metode încorporate pentru fiecare tip de date. Puteți verifica referințele pentru toate metodele încorporate ale diferitelor tipuri de date și structuri de date.

    Cum se creează o matrice în JavaScript?

    Matricele sunt una dintre structurile de date de bază în JavaScript. Arrayurile pot avea orice tip de date în ele, deoarece JavaScript este dinamic. Să vedem cum să creăm matrice în JavaScript.

    Putem crea o matrice folosind paranteze drepte[]. Este simplu și rapid să creezi obiecte

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

    Putem crea o matrice folosind constructorul Array. Oamenii folosesc rar constructorul pentru a crea tablouri în proiecte generale.

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

    Matricele JavaScript sunt mutabile, adică le putem modifica după cum dorim după ce le-am creat.

    Cum se creează un obiect în JavaScript?

    Pe lângă matrice, obiectul este o altă structură de date de bază în JavaScript. Obiectele folosesc stocarea perechilor cheie-valoare. Cheia trebuie să fie o valoare imuabilă, în timp ce valoarea poate fi orice. Să vedem cum să creăm obiecte în JavaScript.

    Putem crea obiecte folosind paranteze {}. Este simplu și rapid să creezi obiecte.

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

    Putem crea obiecte folosind constructorul de obiecte. Oamenii folosesc rar acest lucru în proiecte generale.

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

    Obiectele JavaScript sunt mutabile, adică le putem modifica după creare, așa cum vedeți în al 2-lea exemplu.

    Cum depanați codul JavaScript?

    Codul de depanare nu este simplu. Și e diferit de la un limbaj de programare la altul, de la un proiect la altul etc.; să vedem lucrurile comune folosite pentru a depana JavaScript.

    1. Înregistrare

    Putem folosi instrucțiunile console.log în mai multe locuri din codul nostru pentru a identifica eroarea. Codul va opri rularea următoarelor linii de cod atunci când există o eroare în linia anterioară.

    Înregistrarea este una dintre vechile metode de depanare, care este destul de eficientă pentru proiectele mici. Este o tehnică comună de depanare pentru orice limbaj de programare.

    2. Instrumente pentru dezvoltatori

    JavaScript este folosit mai ales pentru dezvoltarea de aplicații web. Deci, aproape toate browserele au acum instrumente de dezvoltare care ajută la depanarea codului JavaScript.

    Una dintre cele mai utilizate metode de depanare este setarea punctelor de întrerupere în instrumentele pentru dezvoltatori. Punctele de întrerupere opresc execuția JavaScript și oferă toate informațiile despre execuție în acest moment.

    Putem seta mai multe puncte de întrerupere în jurul locului în care primim erori și să vedem ce le cauzează. Este cel mai eficient mod de a depana aplicațiile web JavaScript.

    3. IDE-uri

    Putem folosi IDE-urile pentru a depana JavaScript. VS Code acceptă depanarea cu puncte de întrerupere. Caracteristica de depanare poate diferi în funcție de IDE-ul pe care îl utilizați. Dar, majoritatea IDE-urilor vor avea această caracteristică.

    Cum să adăugați cod JavaScript într-un fișier HTML?

    Putem adăuga fișierul HTML JavaScript folosind eticheta script. Puteți verifica exemplul de mai jos.

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

    Ce sunt cookie-urile?

    Cookie-urile sunt perechi cheie-valoare folosite pentru a stoca informații mici. Informația poate fi orice. Putem seta timpul de expirare a cookie-urilor, care vor fi șterse după ora de expirare a acestora. Acestea sunt utilizate pe scară largă pentru a stoca informațiile utilizatorilor.

      Cum să reamintești un e-mail în Gmail

    Cookie-urile nu vor fi șterse chiar dacă reîmprospătăm pagina până când le ștergem sau expiră. Puteți verifica cookie-urile oricărei aplicații web/pagini web din orice browser, deschizând instrumentele pentru dezvoltatori.

    Putem citi cookie-ul în JavaScript folosind document.cookie. Va returna toate cookie-urile pe care le-am creat.

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

    Va returna un șir gol dacă nu există cookie-uri.

    Putem crea module cookie setând perechea cheie-valoare la document.cookie. Să vedem un exemplu.

    document.cookie = "one=One;";

    În sintaxa de mai sus, o cheie cookie și One este valoarea acesteia. Putem adăuga mai multe atribute cookie-ului cum ar fi domeniul, calea, expiră etc.; fiecare dintre ele ar trebui să fie separate prin punct și virgulă (;). Toate atributele sunt opționale.

    Să vedem un exemplu cu atribute.

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

    În codul de mai sus, am adăugat o dată de expirare și o cale cookie-ului. Dacă nu este furnizată data de expirare, cookie-ul va fi șters după sesiune. Calea implicită va fi calea fișierului. Formatul datei de expirare ar trebui să fie GMT.

    Să vedem cum să creăm mai multe cookie-uri.

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

    Cookie-urile nu vor fi suprascrise dacă cheia sau calea este diferită în timp ce setați mai multe module cookie. Dacă cheia și calea sunt aceleași, atunci acesta va suprascrie cookie-ul anterior. Consultați exemplul de mai jos, care va suprascrie cookie-ul setat anterior.

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

    Am eliminat data de expirare din cookie și am schimbat valoarea.

    Utilizați data de expirare o dată viitoare când testați codul pentru ca acesta să funcționeze corect. Dacă păstrați aceeași dată 31 ianuarie 2023 chiar și după 31 ianuarie 2023, cookie-urile nu vor fi create.

    Am văzut cum să creăm și să actualizăm cookie-urile. Să vedem cum să ștergem cookie-urile.

    Ștergerea cookie-urilor este ușoară. Doar schimbați data de expirare a cookie-ului cu orice dată anterioară. Verificați exemplul de mai jos.

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

    Nu veți găsi ultimul cookie în cookie-uri, deoarece este șters în ultima linie a codului. Asta este pentru tutorialul min cookies.

    Care sunt diferitele cadre JavaScript?

    Există o mulțime de cadre JavaScript acolo. React, Vue, Angular, etc., pentru dezvoltarea UI. Express, Koa, Nest, etc., pentru dezvoltarea pe server. NextJS, Gatsby, etc., pentru generarea de site-uri statice. React Native, Ionic, etc., pentru dezvoltarea de aplicații mobile. Am menționat câteva dintre cadrele JavaScript aici. Puteți găsi mai multe cadre care va dura mult timp pentru a fi explorate. Explorați când aveți nevoie de ele.

    Închideri în JavaScript

    O închidere este o funcție împreună cu domeniul său lexical și mediul său lexical părinte. Cu închideri, putem accesa datele din domeniul extern. Închiderile se formează atunci când sunt create funcțiile.

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

    Închiderile sunt utilizate pe scară largă în aplicațiile JavaScript. S-ar putea să le fi folosit înainte fără să-ți dai seama că sunt închideri. Mai sunt multe de învățat despre închideri. Asigurați-vă că ați învățat complet acest concept.

    Ridicare în JavaScript

    Hoisting este un proces în JavaScript în care declararea variabilelor, funcțiilor și claselor se deplasează în partea de sus a domeniului de aplicare înainte de a executa codul.

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

    Dacă rulați codul de mai sus, nu veți vedea nicio eroare. Dar în majoritatea limbilor, veți primi eroarea. Ieșirea va fi nedefinită, deoarece ridicarea mută doar declarațiile în partea de sus și nu o va inițializa până la rândul numărul 3.

    Schimbați var la let sau const după cum urmează și rulați din nou codul.

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

    Acum, veți primi eroarea de referință care spune că nu putem accesa variabila înainte de a o inițializa.

    ReferenceError: Cannot access 'name' before initialization

    Deci, aici let și const sunt introduse în ES6, care nu pot fi accesate înainte de inițializare, așa cum sugerează eroarea. Acest lucru se datorează faptului că variabilele declarate cu let sau const vor fi în Zona moartă temporală (TDZ) până la inițializarea liniei. Nu putem accesa variabilele din TDZ.

    Curry în JavaScript

    Currying este o tehnică pentru a converti funcții cu mulți parametri în mai puțini parametri cu mai multe apelabile. Cu acesta, putem converti o funcție apelabilă add(a, b, c, d) în add(a)(b)(c)(d) apelabilă. Să vedem un exemplu despre cum se face.

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

    Putem generaliza funcția getCurryCallback care va fi folosită pentru diferite funcții pentru a le converti în apelabile curry. Puteți consulta informațiile JavaScript pentru mai multe detalii despre el.

    Diferența dintre document și fereastră

    Fereastra este obiectul cel mai de sus din browser. Conține toate informațiile despre fereastra browserului, cum ar fi istoric, locație, navigator etc.; este disponibil la nivel global în JavaScript. Îl putem folosi direct în codul nostru, fără importuri. Putem accesa proprietățile și metodele obiectului fereastră fără fereastră.

    Documentul este o parte a obiectului fereastră. Tot HTML încărcat pe pagina web este convertit în obiectul document. Obiectul document se referă la elementul special HTMLDocument, care va avea proprietăți și metode diferite ca toate elementele HTML.

    Fereastra în care obiectul reprezintă fereastra browserului și documentul reprezintă documentul HTML încărcat în acea fereastră de browser.

    Diferența dintre partea client și partea serverului

    Partea client se referă la utilizatorul final care utilizează aplicația. Partea server se referă la serverul web în care este implementată aplicația.

    În terminologia frontend, putem spune browser pe computerele utilizatorilor ca parte client și servicii cloud ca parte server.

    Diferența dintre innerHTML și innerText

    Atât innerHTML cât și innerText sunt proprietățile elementelor HTML. Putem schimba conținutul unui element HTML folosind aceste proprietăți.

    Putem atribui șirul HTML la innerHTML o proprietate redată ca HTML normal. Verificați exemplul de mai jos.

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

    Adăugați un element cu titlul id-ului în HTML și adăugați scriptul de mai sus în fișierul JavaScript. Rulați codul și vedeți rezultatul. Veți tipstrick.ro în culoare portocalie. Și dacă inspectați elementul, acesta va fi în interiorul etichetei span. Deci, innerHTML va lua șirul HTML și îl va reda ca HTML normal.

      Remediați eroarea prinsă de excepție netratată CoD Black Ops 2

    InnerText de pe cealaltă parte va lua un șir normal și îl va reda așa cum este. Nu va reda niciun HTML ca innerHTML. Schimbați innerHTML în innerText în codul de mai sus și verificați rezultatul.

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

    Acum, veți vedea șirul exact pe care l-am furnizat pe pagina web.

    Diferența dintre let și var

    Cuvintele cheie let și var sunt folosite pentru a crea variabile în JavaScript. Cuvântul cheie let este introdus în ES6.

    Let are un domeniu de bloc și var este un domeniu de funcție.

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

    Rulați codul de mai sus. Veți primi o eroare pe ultima linie, deoarece nu putem accesa un permis în afara blocului, deoarece este blocat. Acum, schimbați-l în var și rulați-l din nou.

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

    Nu veți primi nicio eroare, deoarece putem accesa și variabila în afara blocului. Acum, să înlocuim blocul cu o funcție.

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

    Veți primi o eroare de referință dacă rulați codul de mai sus, deoarece nu putem accesa var a it în afara funcției, deoarece este în funcție de funcție.

    Putem redeclara variabilele folosind cuvântul cheie var, dar nu putem redeclara variabilele folosind cuvântul cheie let. Să vedem un exemplu.

    var a = "tipstrick.ro";
    var a = "Chandan";
    console.log(a);
    let a = "tipstrick.ro";
    let a = "Chandan";
    console.log(a);

    Prima bucată de cod nu va genera nicio eroare, iar valoarea este a va fi schimbată la cea mai recentă valoare atribuită. A doua bucată de cod va genera o eroare, deoarece nu putem redeclara variabile folosind let.

    Diferența dintre stocarea sesiunii și stocarea locală

    Stocarea sesiunii și stocarea locală sunt folosite pentru a stoca informații pe computerele utilizatorilor, care pot fi accesate fără internet. Putem stoca perechile cheie-valoare atât în ​​stocarea sesiunii, cât și în stocarea locală. Atât cheia, cât și valoarea vor fi convertite în șiruri de caractere dacă furnizați orice alt tip de date sau structură de date.

    Spațiul de stocare al sesiunii va fi șters după încheierea sesiunii (când browserul este închis). Spațiul de stocare al locației nu va fi șters până când nu îl ștergem.

    Putem accesa, actualiza și șterge stocarea sesiunii și stocarea locației cu obiecte sessionStorage și, respectiv, localStorage.

    Ce este NaN în JavaScript?

    NaN este abreviat ca Not-a-Number. Reprezintă că ceva nu este un număr legal/valid în JavaScript. Există unele cazuri în care vom obține NaN ca rezultat, cum ar fi 0/0, nedefinit * 2, 1 + nedefinit, nul * nedefinit etc.,

    Ce este lexical scoping?

    Sfera lexicală se referă la accesarea variabilelor din domeniul părinților săi. Să presupunem că avem o funcție cu două funcții interioare. Funcția cea mai interioară poate accesa variabilele de aplicare ale celor două funcții părinte. În mod similar, funcția de al 2-lea nivel poate accesa domeniul de aplicare al funcției cel mai extern. Să vedem într-un exemplu.

    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 folosește un lanț de domeniu pentru a găsi variabila atunci când o accesăm undeva în cod. În primul rând, va verifica variabila din domeniul curent și apoi domeniul părinte până la domeniul global.

    Ce se trece prin valoare și ce se trece prin referință?

    Trecerea prin valoare și trecerea prin referință sunt două moduri de a transmite argumentele unei funcții în JavaScript.

    Transmitere după valoare: creează o copie a datelor originale și o transmite funcției. Deci, atunci când am făcut orice modificări în funcție, aceasta nu va afecta datele originale. Verificați exemplul de mai jos.

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

    Veți vedea că valoarea inițială a lui a nu este schimbată, chiar dacă am schimbat-o în interiorul funcției.

    Trecere prin referință: transmite referința datelor către funcție. Deci, atunci când am făcut orice modificări în funcție, aceasta va schimba și datele originale.

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

    Veți vedea că valoarea inițială a arr este schimbată atunci când o schimbăm în interiorul funcției.

    Notă: toate tipurile de date primitive sunt transmise după valoare, iar cele neprimitive sunt transmise prin referință.

    Ce este memorarea?

    Memorizarea este o tehnică care stochează valorile calculate în cache și le folosește atunci când avem nevoie de ele din nou, fără a le calcula din nou. Va accelera execuția codului dacă calculul este foarte greu. Există un compromis de stocare care nu este o problemă mare în comparație cu timpul.

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

    Este un exemplu simplu care demonstrează memorizarea. Aici, adăugarea a două numere nu este un calcul greu. Este doar pentru demo.

    Care este parametrul de odihnă?

    Parametrul rest este folosit pentru a colecta toți parametrii rămași dintr-o funcție. Să presupunem că avem o funcție care va accepta minim 2 argumente și poate accepta orice număr de parametri la maximum. Deoarece nu avem numărul maxim de argumente, putem colecta primii 2 parametri cu variabile normale și toți ceilalți cu parametrul rest folosind operatorul rest.

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

    Parametrul rest va fi o matrice a ultimelor trei argumente din exemplul de mai sus. Cu aceasta, putem avea orice număr de parametri pentru o funcție.

    O funcție poate avea un singur parametru de odihnă. Iar parametrul rest ar trebui să fie ultimul în ordinea parametrilor.

    Ce este destructurarea obiectelor?

    Destructurarea obiectelor este utilizată pentru a accesa variabilele din obiect și pentru a le atribui variabilelor cu aceleași nume ca și cheile obiectului. Să vedem un exemplu.

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

    Putem schimba variabilele variabilelor destructurate în aceeași linie, după cum urmează.

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

    Ce este destructurarea matricei?

    Destructurarea matricei este utilizată pentru a accesa variabilele din matrice și pentru a le atribui variabilelor. Să vedem un exemplu.

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

    Ce sunt captarea evenimentelor și bulele de evenimente?

    Capturarea evenimentelor și bulele de evenimente sunt două moduri de propagare a evenimentelor în HTML DOM. Să presupunem că există două elemente HTML, unul în interiorul celuilalt. Și un eveniment are loc pe elementul interior. Acum, modul de propagare a evenimentelor va decide ordinea executării acestor evenimente.

      Cum să obțineți un programator de întâlniri Google

    Bubble de evenimente: rulează mai întâi handlerul de evenimente pe element, apoi elementul său și apoi merge până la elementul cel mai de sus. Acesta este comportamentul implicit al tuturor evenimentelor.

    Capturarea evenimentelor: trebuie să specificăm în cazul în care trebuie să folosim acest tip de propagare a evenimentelor. O putem specifica în timp ce adăugăm ascultătorul de evenimente. Evenimentele se vor executa în următoarea ordine dacă avem activată capturarea evenimentelor.

  • Evenimentele începe să se execute de la elementul cel mai de sus până la elementul țintă în jos.
  • Evenimentul de pe elementul țintă va fi executat din nou.
  • Propagarea evenimentului de barbotare va avea loc din nou până când elementul cel mai de sus este ridicat.
  • Putem opri propagarea evenimentului apelând event.stopPropogation o metodă din handlerul de evenimente.

    Care sunt promisiunile în JavaScript?

    Obiectul Promise este folosit pentru operațiunile asincrone care se vor finaliza în viitor cu o stare de succes sau eșec.

    O promisiune poate fi în una dintre următoarele stări.

  • în așteptare – când operațiunea este încă în curs.
  • îndeplinită – când operațiunea este finalizată cu succes. Vom avea rezultate (dacă există) în starea de succes.
  • respins – când operațiunea este finalizată cu o defecțiune. Vom avea motivul (eroarea) pentru care a eșuat.
  • Să vedem două exemple de cazuri de succes și eșec.

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

    Puteți avea mai multe, apoi înlănțuiți dacă este necesar. Datele returnate anterior vor fi acceptate în următorul apel invers.

    Explicați diferitele tipuri de domeniu în JavaScript

    Există două tipuri de domeniul de aplicare în JavaScript. Sfera globală și sfera locală.

    S-ar putea să fi auzit și despre domeniul de aplicare al funcției și al blocului. Sunt domenii locale pentru var și respectiv let, const.

    Ce sunt funcțiile de auto-invocare?

    Funcțiile cu auto-invocare sunt funcții fără nume care vor fi executate imediat după creare. Să vedem câteva exemple.

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

    Putem chiar să transmitem argumentele funcțiilor de auto-invocare, așa cum ați văzut în exemplu.

    Ce sunt funcțiile săgeților?

    Funcția săgeată este zahăr sintactic la funcția normală cu unele modificări. Ele se comportă ca funcții normale în cazurile generale de utilizare. Funcțiile săgeată sunt utile atunci când trebuie să avem apeluri inverse. Să-i vedem sintaxa.

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

    Există unele diferențe între funcțiile săgeată și funcțiile normale.

    • Funcțiile săgeată nu au propria lor legătură. Cuvântul cheie this din interiorul funcției săgeată se referă la domeniul său părinte this.
    • Funcțiile săgeată nu pot fi folosite ca funcții de constructor

    Ce sunt apelurile inverse?

    Un callback este o funcție care este transmisă unei alte funcții care este invocată în interiorul acelei funcții. Utilizarea apelurilor inverse este un lucru comun în JavaScript. Să vedem un exemplu.

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

    Funcția terminată este transmisă ca un apel invers la eșantion. Funcția terminată este invocată cu rezultatul după efectuarea unei acțiuni. Veți vedea utilizarea apelurilor inverse mai ales în operațiuni asincrone, cum ar fi promisiuni, setTimeout etc.,

    Care sunt diferitele tipuri de erori?

    Să verificăm câteva erori în JavaScript.

    ReferenceError: această eroare va apărea dacă variabila pe care o accesăm este disponibilă.

    TypeError: JavaScript va genera această eroare dacă eroarea nu se potrivește cu alte tipuri de erori. Se va întâmpla și atunci când încercăm să efectuăm o acțiune care nu este compatibilă cu datele.

    SyntaxError: această eroare va apărea dacă sintaxa JavaScript nu este corectă.

    Există și alte tipuri de erori. Dar acestea sunt tipurile de erori comune în JavaScript.

    Care sunt diferitele domenii ale variabilelor din JavaScript?

    Există două domenii de variabile în JavaScript. Variabilele declarate folosind cuvântul cheie var vor avea domeniul de aplicare al funcției, iar variabilele declarate cu let și const vor avea domeniul de aplicare al blocului.

    Consultați a 17-a întrebare pentru mai multe detalii despre domeniul de aplicare al acestor variabile.

    Ce sunt caracterele de escape în JavaScript?

    Bara oblică inversă este caracterul de escape în JavaScript. Este folosit pentru a tipări unele caractere speciale pe care nu le putem imprima în general. Să presupunem că vrem să tipărim apostroful (‘) în interiorul unui șir, ceea ce nu putem face în mod normal, deoarece șirul se va termina la al doilea apostrof. În acest caz, vom avea caracterul de escape pentru a evita terminarea șirului în acel moment.

    const message="Hi, I"m tipstrick.ro';
    console.log(message);

    Putem obține rezultatul de mai sus fără a folosi caracterul de evacuare prin înlocuirea apostrofelor simple exterioare cu apostrofe duble. Dar este doar un exemplu de utilizare a unui caracter de evadare. Există și alte caractere pentru care avem nevoie cu siguranță de caracter de escape, cum ar fi n, t, etc..,

    Ce sunt BOM și DOM?

    Browser Object Model (BOM): toate browserele au BOM reprezentând fereastra curentă a browserului. Conține obiectul nostru cel mai de sus fereastră, care este folosit pentru a manipula fereastra browserului.

    Document Object Model (DOM): browserele creează DOM atunci când HTML-ul este încărcat în structura arborescentă. Putem manipula elementele HTML folosind API-ul DOM.

    Ce este un obiect ecran?

    Obiectul ecran este una dintre proprietățile obiectului fereastră globală. Conține diferite proprietăți ale ecranului pe care este redată fereastra curentă a browserului. Unele dintre proprietăți sunt lățime, înălțime, orientare, pixelDepth, etc.,

    Concluzie

    S-ar putea să existe întrebări ulterioare pentru toate întrebările de mai sus. Deci, trebuie să pregătiți conceptele în jurul tuturor întrebărilor de mai sus.

    De asemenea, puteți explora câteva întrebări și răspunsuri frecvente la interviu Java.

    Învățare fericită 🙂

    x