Ομώνυμες Παράμετροι στο JavaScript

Ας υποθέσουμε τώρα ότι η εξωτερική και η εσωτερική συνάρτηση έχουν ομώνυμες παραμέτρους:

javascriptfunction test(num) {
  function func(num) {
    console.log(num); // θα εμφανίσει 1
  }
  
  func(num);
};

test(1);

Σε αυτή την περίπτωση, η εσωτερική συνάρτηση θα έχει μια τοπική μεταβλητή num. Η αλλαγή της στην εσωτερική συνάρτηση δεν θα επηρεάσει καθόλου την εξωτερική μεταβλητή num:

javascriptfunction test(num) {
  function func(num) {
    num = 2; // αλλάζουμε την τοπική μεταβλητή num
  }
  
  func(num);
  console.log(num); // θα εμφανίσει 1 - τίποτα δεν άλλαξε
}

test(1);

Το αποτέλεσμα είναι ότι η εσωτερική συνάρτηση δεν μπορεί να προσπελάσει την εξωτερική μεταβλητή num για να την αλλάξει:

javascriptfunction test(num) {
  function func(num) {
    // εδώ δεν είναι δυνατή η πρόσβαση στην εξωτερική μεταβλητή num
  }
  
  func(num);
}
test(1);
Задание 1

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

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

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

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

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

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

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

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

test(1);
Задание 4

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

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

test(1);