⊗jsPmFCPS 273 of 505 menu

Άνω τελεία για ασφάλεια σε IIFE

Ας υποθέσουμε τώρα ότι η συνάρτηση που καλείται αμέσως μετά τη δήλωσή της δεν ξεκινά με σύμβολο συν, αλλά είναι περικλεισμένη σε παρενθέσεις, έτσι:

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

Ας υποθέσουμε ότι η μεταβλητή num ορίζεται έξω από τη συνάρτηση:

let num = 1; // υπάρχει άνω τελεία (function() { console.log(num); // θα εμφανίσει 1 })();

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

let num = 1 (function() { console.log(num); //!! θα δώσει σφάλμα })();

Αποδεικνύεται ότι αυτός ο κώδικας θα προκαλέσει σφάλμα, καθώς η JavaScript αντιλαμβάνεται τη συνάρτησή μας ως συνέχεια της εντολής της πρώτης γραμμής.

Για να αποφύγουμε τέτοια προβλήματα, πριν από την κλήση της άμεσα εκτελούμενης συνάρτησης, πρέπει πάντα να τοποθετούμε μια άνω τελεία, έτσι:

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

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

Επομένως, πάντα-πάντα τοποθετείστε μια άνω τελεία πριν από την κλήση άμεσα εκτελούμενης συνάρτησης, ακόμα κι αν είστε σίγουροι αυτή τη στιγμή ότι δεν θα υπάρξουν προβλήματα. Μπορεί να προκύψουν αργότερα.

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

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

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

let str = 'str'; (function() { console.log(1); })();

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

let str = 'str' (function() { console.log(1); })();
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη