Pesastatud funktsioonide ulatus JavaScriptis

Kui funktsioon sisaldab sees teist funktsiooni - on välimise funktsiooni muutujad sisemises funktsioonis nähtavad:

javascriptfunction test() {
  let num = 1; // välimise funktsiooni muutuja
  
  function func() {
    console.log(num); // väljastab 1
  }
  
  func(); // kutsume välja sisemise funktsiooni
}

test(); // kutsume välja välimise funktsiooni

Samuti on sisemises funktsioonis nähtavad muutujad, mis on defineeritud väljaspool välimist funktsiooni:

javascriptlet num = 1; // globaalne muutuja

function test() {
  function func() {
    console.log(num); // väljastab 1
  }
  
  func(); // kutsume välja sisemise funktsiooni
};

test(); // kutsume välja välimise funktsiooni
Задание 1

Määrake, koodi käivitamata, mis konsooli väljastatakse:

javascriptfunction test() {
  let num = 1;
  
  function func() {
    console.log(num);
  }
  
  func();
}

test();
Задание 2

Määrake, koodi käivitamata, mis konsooli väljastatakse:

javascriptfunction test() {
  let num = 1;
  
  function func() {
    console.log(num);
  }
}

test();
Задание 3

Määrake, koodi käivitamata, mis konsooli väljastatakse:

javascriptfunction test() {
  let num = 1;
  
  function func() {
    console.log(num);
  }
  
  func();
}
Задание 4

Määrake, koodi käivitamata, mis konsooli väljastatakse:

javascriptfunction test() {
  let num;
  
  function func() {
    console.log(num);
  }
  
  num = 1
  func();
  
  num = 2
  func();
}

test();