Συνάρτηση με όνομα, αλλά Function Expression στη JavaScript
Ας δημιουργήσουμε τώρα μια συνάρτηση που θα έχει όνομα, αλλά ταυτόχρονα θα είναι Function Expression, επειδή συμμετέχει σε μια έκφραση:
+function func() {
console.log('!');
}
Είναι ενδιαφέρον ότι με το όνομα func δεν
θα μπορούμε να απευθυνθούμε στη συνάρτησή μας, αυτό θα
οδηγεί σε σφάλμα:
+function func() {
console.log('!');
}
func(); //!! θα δώσει σφάλμα
Για να έχουμε τη δυνατότητα να καλέσουμε τη συνάρτησή μας, πρέπει να την αντιστοιχίσουμε σε κάποια μεταβλητή:
let test = function func() {
console.log('!');
};
test(); // θα εμφανίσει '!'
Για άλλη μια φορά: μια συνάρτηση που είναι functional expression δεν μπορεί να κληθεί με το όνομά της. Μια τέτοια συνάρτηση μπορεί να κληθεί μόνο χρησιμοποιώντας τη μεταβλητή στην οποία είχε αποθηκευτεί αυτή η συνάρτηση.
Ωστόσο, ένα functional expression μπορεί να έχει όνομα συνάρτησης, αυτό θα είναι συντακτικά σωστό. Γιατί χρειάζεται κάτι τέτοιο, θα το εξετάσουμε στα επόμενα μαθήματα.
Ας συνοψίσουμε: οι συναρτήσεις είναι Function Declaration ή Function Expression όχι επειδή έχουν όνομα ή δεν έχουν, αλλά επειδή είναι συμμετέχοντες σε εκφράσεις ή δεν είναι.
Όπως είδατε παραπάνω, μια συνάρτηση χωρίς όνομα μπορεί να γίνει αντιληπτή ως Function Declaration, ενώ μια συνάρτηση με όνομα μπορεί να είναι Function Expression.