Sobes.tech
Junior

Ի՞նչ է JavaScript հոսթինգը։

sobes.tech AI

Պատասխան AI-ից

JavaScript հոսթինգը (կամ JavaScript hosting) վերաբերում է JavaScript կոմպիլյատորի վարքագծին, երբ փոփոխականների և ֆունկցիաների հայտարարությունները "բարձրացվում" են իրենց տեսանելիության տարածքի սկզբին՝ կոդի կատարման առաջ:

Հիմնական կետեր՝

  • Բարձրացվում են միայն հայտարարությունները, ոչ թե ինիցիալիզացիաները։ Սա նշանակում է, որ կարող եք օգտագործել փոփոխական կամ ֆունկցիա մինչև այն հայտարարելը կոդում, բայց փոփոխականի արժեքը մինչև նրա ինիցիալիզացիան կլինի undefined:
  • var, let/const և function հայտարարությունների տարբեր վարքագիծ։
    • var: Հայտարարությունները բարձրացվում և ինիցիալիզվում են undefined արժեքով՝ տեսանելիության տարածքի սկզբում:
      console.log(myVar); // undefined
      var myVar = 10;
      
    • let և const: Հայտարարությունները բարձրացվում են, բայց չեն ինիցիալիզվում։ Դասանելիությունը դրանց մինչև ինիցիալիզացիան առաջացնում է սխալ ReferenceError (ժամանակավոր մահացու գոտի՝ Temporal Dead Zone):
      // console.log(myLet); // ReferenceError: cannot access 'myLet' before initialization
      let myLet = 20;
      
    • Ֆունկցիայի հայտարարություններ: Բոլոր ֆունկցիայի հայտարարությունները (անուն և մարմին) բարձրացվում են։ Ֆունկցիան կարող է կանչվել մինչև նրա հայտարարությունը:
      myFunction(); // "hello"
      function myFunction() {
        console.log("hello");
      }
      
    • Ֆունկցիայի արտահայտություններ: Բարձրացվում է միայն փոփոխականը (var, let կամ const), որի վրա ֆունկցիա է վերագրված։ Ֆունկցիան չի կարող կանչվել մինչև վերագնահատումը:
      // myFuncExpression(); // TypeError: myFuncExpression is not a function (եթե հայտարարած է `var`-ով)
      // myFuncExpression(); // ReferenceError: cannot access 'myFuncExpression' before initialization (եթե հայտարարած է `let`/`const`-ով)
      var myFuncExpression = function() {
        console.log("world");
      };
      

Հասկանալ հոսթինգը կարևոր է անակնկալ վարքագծից և սխալներից խուսափելու համար։ let և const օգտագործումը օգնում է դարձնել փոփոխականների հայտարարության վարքագիծը ավելի կանխատեսելի։