Εμβέλεια Ορατότητας Ενσωματωμένων Συναρτήσεων στο JavaScript

Εάν μια συνάρτηση περιέχει μέσα της μια άλλη συνάρτηση - οι μεταβλητές της εξωτερικής συνάρτησης είναι ορατές στην εσωτερική:

javascriptfunction test() {
  let num = 1; // μεταβλητή εξωτερικής συνάρτησης
  
  function func() {
    console.log(num); // θα εμφανίσει 1
  }
  
  func(); // καλούμε την εσωτερική συνάρτηση
}

test(); // καλούμε την εξωτερική συνάρτηση

Επίσης, στην εσωτερική συνάρτηση θα είναι ορατές οι μεταβλητές που ορίζονται έξω από την εξωτερική συνάρτηση:

javascriptlet num = 1; // καθολική μεταβλητή

function test() {
  function func() {
    console.log(num); // θα εμφανίσει 1
  }
  
  func(); // καλούμε την εσωτερική συνάρτηση
};

test(); // καλούμε την εξωτερική συνάρτηση
Задание 1

Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:

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

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

Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:

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

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

Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:

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

Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:

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

test();