Συνάρτηση με όνομα, αλλά Function Expression στη JavaScript

Ας δημιουργήσουμε τώρα μια συνάρτηση που θα έχει όνομα, αλλά ταυτόχρονα θα είναι Function Expression, επειδή συμμετέχει σε μια έκφραση:

javascript+function func() {
  console.log('!');
}

Είναι ενδιαφέρον ότι με το όνομα func δεν θα μπορούμε να απευθυνθούμε στη συνάρτησή μας, αυτό θα οδηγεί σε σφάλμα:

javascript+function func() {
  console.log('!');
}

func(); //!! θα δώσει σφάλμα

Για να έχουμε τη δυνατότητα να καλέσουμε τη συνάρτησή μας, πρέπει να την αντιστοιχίσουμε σε κάποια μεταβλητή:

javascriptlet test = function func() {
  console.log('!');
};

test(); // θα εμφανίσει '!'

Για άλλη μια φορά: μια συνάρτηση που είναι functional expression δεν μπορεί να κληθεί με το όνομά της. Μια τέτοια συνάρτηση μπορεί να κληθεί μόνο χρησιμοποιώντας τη μεταβλητή στην οποία είχε αποθηκευτεί αυτή η συνάρτηση.

Ωστόσο, ένα functional expression μπορεί να έχει όνομα συνάρτησης, αυτό θα είναι συντακτικά σωστό. Γιατί χρειάζεται κάτι τέτοιο, θα το εξετάσουμε στα επόμενα μαθήματα.

Ας συνοψίσουμε: οι συναρτήσεις είναι Function Declaration ή Function Expression όχι επειδή έχουν όνομα ή δεν έχουν, αλλά επειδή είναι συμμετέχοντες σε εκφράσεις ή δεν είναι.

Όπως είδατε παραπάνω, μια συνάρτηση χωρίς όνομα μπορεί να γίνει αντιληπτή ως Function Declaration, ενώ μια συνάρτηση με όνομα μπορεί να είναι Function Expression.