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