Τύποι δεδομένων JavaScript: Επεξήγηση Typeof

typeofείναι μια λέξη-κλειδί JavaScript που θα επιστρέψει τον τύπο μιας μεταβλητής όταν την καλείτε. Μπορείτε να το χρησιμοποιήσετε για να επικυρώσετε τις παραμέτρους της λειτουργίας ή να ελέγξετε αν έχουν οριστεί μεταβλητές. Υπάρχουν και άλλες χρήσεις.

Ο typeofχειριστής είναι χρήσιμος επειδή είναι ένας εύκολος τρόπος για να ελέγξετε τον τύπο μιας μεταβλητής στον κώδικά σας. Αυτό είναι σημαντικό επειδή η JavaScript είναι μια γλώσσα που έχει πληκτρολογηθεί δυναμικά. Αυτό σημαίνει ότι δεν απαιτείται να αντιστοιχίσετε τύπους σε μεταβλητές κατά τη δημιουργία τους. Επειδή μια μεταβλητή δεν περιορίζεται με αυτόν τον τρόπο, ο τύπος της μπορεί να αλλάξει κατά τη διάρκεια εκτέλεσης ενός προγράμματος.

Για παράδειγμα:

var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object

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

Ο typeofτελεστής επιστρέφει μια συμβολοσειρά που αντιπροσωπεύει τον τρέχοντα τύπο μιας μεταβλητής. Το χρησιμοποιείτε πληκτρολογώντας typeof(variable)ή typeof variable. Επιστρέφοντας στο προηγούμενο παράδειγμα, μπορείτε να το χρησιμοποιήσετε για να ελέγξετε τον τύπο της μεταβλητής xσε κάθε στάδιο:

var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object

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

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

function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }

Ένας άλλος τρόπος με τον οποίο ο typeofχειριστής μπορεί να είναι χρήσιμος είναι να διασφαλίσει ότι ορίζεται μια μεταβλητή προτού προσπαθήσετε να την αποκτήσετε πρόσβαση στον κωδικό σας. Αυτό μπορεί να βοηθήσει στην αποτροπή σφαλμάτων σε ένα πρόγραμμα που ενδέχεται να προκύψουν εάν προσπαθείτε να αποκτήσετε πρόσβαση σε μια μεταβλητή που δεν έχει καθοριστεί.

function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }

Η έξοδος του typeofχειριστή μπορεί να μην είναι πάντα αυτό που περιμένετε όταν ελέγχετε έναν αριθμό.

Οι αριθμοί μπορούν να μετατραπούν στην τιμή NaN (Not A Number) για πολλούς λόγους.

console.log(typeof NaN); //"number"

Ίσως προσπαθήσατε να πολλαπλασιάσετε έναν αριθμό με ένα αντικείμενο επειδή ξεχάσατε να αποκτήσετε πρόσβαση στον αριθμό μέσα στο αντικείμενο.

var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number

Κατά τον έλεγχο ενός αριθμού, δεν αρκεί να ελέγξετε την έξοδο typeofενός αριθμού, καθώς NaNεπίσης

περνάει αυτό το τεστ.

Αυτή η συνάρτηση ελέγχει αριθμούς και επίσης δεν επιτρέπει NaNνα περάσει η τιμή.

function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }

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

var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object

Περισσότερες πληροφορίες:

Τεκμηρίωση MDN για typeof