Παράμετροι Εξωτερικής και Εσωτερικής Συναρτήσεων σε JavaScript
Ας κάνουμε έτσι ώστε τόσο η εξωτερική συνάρτηση όσο και η εσωτερική να δέχονται παραμέτρους:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
Ας περάσουμε την παράμετρο της εξωτερικής συνάρτησης στην κλήση της εσωτερικής συνάρτησης:
function test(num) {
function func(localNum) {
console.log(localNum); // θα εμφανίσει 1
}
func(num); //!! περνάμε την παράμετρο
}
test(1); // περνάμε ως παράμετρο αριθμό
Αποδεικνύεται ότι στην εσωτερική συνάρτηση θα είναι
προσβάσιμη η μεταβλητή num ως εξωτερική
μεταβλητή από τη γονική συνάρτηση και η μεταβλητή
localNum, που είναι τοπική μεταβλητή
της εσωτερικής συνάρτησης.
Και οι δύο αυτές μεταβλητές θα έχουν τις ίδιες τιμές:
function test(num) {
function func(localNum) {
console.log(num); // θα εμφανίσει 1
console.log(localNum); // θα εμφανίσει 1
}
func(num);
}
test(1);
Η διαφορά μεταξύ τους θα είναι η εξής: εάν
στην εσωτερική συνάρτηση αλλάξουμε τη μεταβλητή
num - θα αλλάξει και στην εξωτερική συνάρτηση:
function test(num) {
function func(localNum) {
num = 2; // αλλάζουμε τη μεταβλητή num
}
func(num); // περνάμε την παράμετρο
console.log(num); // θα εμφανίσει 2
}
test(1); // περνάμε ως παράμετρο αριθμό
Ενώ η μεταβλητή localNum θα είναι τοπική.
Οι αλλαγές της δεν θα οδηγούν σε καμία
αλλαγή στην εξωτερική συνάρτηση. Επίσης η ίδια
η μεταβλητή localNum δεν θα είναι ορατή
εξωτερικά της εσωτερικής συνάρτησης:
function test(num) {
function func(localNum) {
localNum = 2; // αλλάζουμε τη μεταβλητή num
}
func(num); // περνάμε την παράμετρο
}
test(1); // περνάμε ως παράμετρο αριθμό
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
Προσδιορίστε, χωρίς να εκτελέσετε τον κώδικα, τι θα εμφανιστεί στην κονσόλα:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);