Θέμα Jannah Η άδεια δεν είναι επικυρωμένη. Μεταβείτε στη σελίδα επιλογών θέματος για να επικυρώσετε την άδεια χρήσης, Χρειάζεστε μία άδεια για κάθε όνομα τομέα.

Πώς να ελέγξετε τον τύπο δεδομένων σε JavaScript χρησιμοποιώντας typeof και άλλες μεθόδους

Τύποι JavaScript: Τι είναι και πώς να τους ελέγξετε;

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

Πώς να ελέγξετε τον τύπο δεδομένων σε JavaScript χρησιμοποιώντας typeof και άλλες μεθόδους

Όπως συμβαίνει με τις περισσότερες γλώσσες προγραμματισμού, η JavaScript χειρίζεται διαφορετικά διαφορετικούς τύπους τιμών. Μια συμβολοσειρά όπως το "Hello world" είναι πολύ διαφορετική από έναν αριθμό όπως το 42. Αλλά ποιοι τύποι είναι διαθέσιμοι και γιατί είναι σημαντικοί;

Τι είναι οι τύποι δεδομένων JavaScript;

Κάθε τιμή στη JavaScript έχει έναν τύπο, ο οποίος είναι ένας από αυτούς τους εννέα τύπους:

  • αριθμός
  • Σπάγγος
  • Boolean
  • Null
  • Απροσδιόριστος
  • BigInt
  • Σύμβολο
  • αντικείμενο
  • Λειτουργία

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

Μια μεταβλητή στην οποία δεν έχει αντιστοιχιστεί τιμή θα έχει μια απροσδιόριστη τιμή. Για παράδειγμα:

> var foo
  undefined

Οι λογικές τιμές είναι είτε αληθείς είτε ψευδείς και χρησιμοποιούνται συνήθως στη λογική υπό όρους.

Οι συμβολοσειρές αποθηκεύουν τιμές κειμένου όπως "γεια", "$$$" και "Λίγες λέξεις". Οι συμβολοσειρές JavaScript αποθηκεύονται σε μορφή UTF-16. Στην πράξη, αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε χαρακτήρες Unicode, όπως emoji, σε χαρακτήρες συμβολοσειράς.

alert("🙂")

Όλα θα λειτουργήσουν όπως αναμένεται:

javascript-alert-emoji Πώς να ελέγξετε τον τύπο δεδομένων σε JavaScript χρησιμοποιώντας typeof και άλλες μεθόδους

Σε αντίθεση με πολλές άλλες γλώσσες προγραμματισμού, η JavaScript δεν κάνει διάκριση μεταξύ ακεραίων και δεκαδικών αριθμών. Τα 42 και 3.14 είναι και τα δύο τύποι Number. Το BigInt, όπως υποδηλώνει και το όνομά του, καλύπτει μόνο ακέραιους αριθμούς και εκείνους των οποίων οι τιμές υπερβαίνουν αυτό που μπορεί να χειριστεί το Number.

Ειδοποίηση
Οι τιμές BigInt είναι πολύ μεγάλες. Δοκιμάστε να εκτελέσετε αυτόν τον κώδικα στην κονσόλα για να γεμίσετε την τρέχουσα σελίδα σας με έναν πολύ μεγάλο αριθμό:

b = document.body, b.style.overflowWrap = "break-word",
 b.textContent = BigInt(2) ** BigInt(200000)

Το Null είναι μια ειδική τιμή που χρησιμοποιείται για να αναπαραστήσει την «απουσία οποιασδήποτε τιμής». Αυτό μπορεί να φαίνεται παράδοξο, αλλά είναι χρήσιμο στον αντικειμενοστρεφή προγραμματισμό, όπου οι αναφορές αντικειμένων μπορούν να αναπαραστήσουν σχέσεις:

var anne = { name: "Anne", child: null };
var john = { name: "John", child: child }

Το σύμβολο είναι ένα ασαφές χαρακτηριστικό της γλώσσας και πιθανότατα δεν θα χρειαστεί ποτέ να το καταλάβετε. Αν ενδιαφέρεστε, ανατρέξτε στην τεκμηρίωση του δικτύου. Προγραμματιστές της Microsoft (MDN) σχετικά με τον κώδικα.

Διαβάστε επίσης:  Πώς να αλλάξετε τον κωδικό πρόσβασης στο PayPal

Οι συναρτήσεις και τα αντικείμενα είναι τιμές που μπορείτε να δημιουργήσετε χρησιμοποιώντας διάφορους μηχανισμούς, συμπεριλαμβανομένης της γραμματικής σύνταξης της γλώσσας:

function my_function() { ... }

let my_object = {};

Μπορείτε επίσης να δημιουργήσετε μια τιμή συνάρτησης χρησιμοποιώντας μια παράσταση:

my_function = function() { ... };

Μπορείτε να δημιουργήσετε ένα αντικείμενο χρησιμοποιώντας τον κατασκευαστή:

let answer = new Object(42);

Ποια είναι η λειτουργία του φύλου;

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

> var foo = 1;
> typeof foo
  'number'

> foo = "hello"
> typeof foo
  'string'

Ειδοποίηση
Ο τελεστής typeof επιστρέφει μια συμβολοσειρά που περιέχει τον τύπο της παραμέτρου του. Δείτε την επόμενη ενότητα για περισσότερες πληροφορίες.

Μία από τις μεγαλύτερες επιπτώσεις των τύπων είναι η σύγκριση δύο τιμών. Η JavaScript έχει δύο τελεστές ισότητας: == και ===. Αυτοί οι δύο τελεστές ελέγχουν για "χαλαρή" και "αυστηρή" ισότητα, αντίστοιχα, και η διαφορά έγκειται στον τύπο.

function check_equals(a, b) {
if (a === b) {
console.log("a and b are strictly equal");
    } else if (a == b) {
console.log("a and b are loosely equal");
    } else {
console.log("a and b are not equal at all");
    }
}

Αν καλέσετε την check_equals(42, 42), θα διαπιστώσετε ότι οι δύο τιμές είναι ακριβώς ίσες: έχουν την ίδια τιμή και τύπο. Αλλά η check_equals(42, “42”) θα δείξει ότι παρόλο που ένας αριθμός και μια συμβολοσειρά μπορούν να έχουν την ίδια τιμή, εξακολουθούν να είναι διαφορετικών τύπων, επομένως είναι μόνο κατά προσέγγιση ίσες.

Διαβάστε επίσης:  Γιατί το WhatsApp συνεχίζει να ζητά PIN και πώς να το απενεργοποιήσετε

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

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

let person = { age: 21 };

if (person.age) {
    alert("person has been born!");
}

Σε αυτήν την περίπτωση, ο τύπος του person.age είναι "number", αλλά η JavaScript τον επιβάλλει σε μια Boolean τιμή κατά την αξιολόγηση της συνθήκης στην πρόταση if. Σχεδόν κάθε αριθμός, θετικός ή αρνητικός, θα μετατραπεί σε "true" όταν επιβληθεί σε μια Boolean τιμή. Αλλά το 0 θα μετατραπεί σε false, επομένως η επιβολή είναι μια χρήσιμη συντόμευση για να αποφύγετε την εγγραφή if (person.age !== 0).

Συμβουλή
Υπάρχουν δύο άλλες αριθμητικές τιμές που επιβάλλουν την τιμή σε false: -0 και NaN. Το NaN είναι μια ειδική τιμή που υποδηλώνει "δεν είναι αριθμός" και αντιπροσωπεύει τα αποτελέσματα μιας μη έγκυρης έκφρασης όπως 42 / "hello". Σημειώστε ότι το typeof NaN επιστρέφει την τιμή 'number'! Άλλοι τύποι έχουν επίσης τιμές που επιβάλλουν την τιμή false, όπως η κενή συμβολοσειρά ("").

Μπορεί να μην περιμένετε ότι ένας τύπος θα εξαναγκάζεται με έναν συγκεκριμένο τρόπο. Για παράδειγμα, το [] == “” θα επιστρέψει true επειδή και οι δύο τιμές εξαναγκάζονται στη λογική τιμή false. Οι κανόνες για τη μετατροπή τιμών μεταξύ τους, υπό διαφορετικές συνθήκες, είναι μακροσκελείς και δύσκολο να τους θυμάστε. Για να το αποφύγετε αυτό, χρησιμοποιήστε === όποτε είναι δυνατόν.

Πώς να χρησιμοποιήσετε τύπους σε JavaScript;

Για να ελέγξετε τον τύπο μιας μεταβλητής, μπορείτε να χρησιμοποιήσετε τον τελεστή typeof. Για παράδειγμα:

function reset_value(val) {
switch (typeof val) {
case "object":
return {};

case "string":
return "";

case "number":
return 0;
    }
}

Ειδοποίηση
Η συνάρτηση typeof null επιστρέφει την λέξη 'object'. Πρόκειται για ένα ελάττωμα στο σχεδιασμό της γλώσσας και έγινε προσπάθεια να διορθωθεί, αλλά η ανάγκη για συμβατότητα με παλαιότερες εκδόσεις στο διαδίκτυο κατέστησε αυτήν την αλλαγή μη πρακτική. Για να ελέγξετε για null, χρησιμοποιήστε το === null.

Διαβάστε επίσης:  Ένας γρήγορος τρόπος για να προσθέσετε οριζόντιες γραμμές στο Word χωρίς να χρειάζεται να σχεδιάσετε με το χέρι

Μπορεί να αναρωτιέστε πού εντάσσονται οι πίνακες στο σύστημα τύπων JavaScript. Μοιάζουν με έναν ξεχωριστό τύπο τιμής:

let myArray = [ "apple", "banana", "cherry" ];

Ωστόσο, η JavaScript θεωρεί έναν πίνακα ως τύπο αντικειμένου:

> typeof [ 1, 2, 3 ]
'object'

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

> Array.isArray([1, 2, 3])
true

Η αλλαγή φύλου αποτελεί πλούσια πηγή λαθών και παρεξηγήσεων. Για παράδειγμα:

> "42" + "18"
'4218'
> "42" + 18
'4218'
> 42 + "18"
'4218'

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

Ωστόσο, αυτό δεν ισχύει για τον πολλαπλασιασμό:

> "42" * 2
84
> "42" * "2"
84

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

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

> let pageNum = new URLSearchParams(document.location.search).get("page");
> pageNum
'1'
> parseInt(pageNum)
1

Μπορείτε επίσης να δημιουργήσετε μια τιμή συγκεκριμένου τύπου χρησιμοποιώντας τις ενσωματωμένες συναρτήσεις περιτύλιξης για κάθε πρωτόγονο (εκτός από τις null και τις απροσδιόριστες): Boolean, Number, BigInt, String και Symbol.

> Number("42") + 18
60

Ο έλεγχος τύπου δεδομένων είναι ένα θεμελιώδες βήμα στη σύνταξη καθαρού και αποτελεσματικού κώδικα σε JavaScript. Χρησιμοποιήστε typeof Στις περισσότερες περιπτώσεις, αυτό είναι αρκετό, αλλά όταν πρόκειται για πιο σύνθετα αντικείμενα ή περιπτώσεις, καθίσταται χρήσιμη η χρήση πρόσθετων εργαλείων όπως: instanceof Ή Object.prototype.toStringΚάθε μέθοδος έχει τη θέση της και με την πάροδο του χρόνου θα είστε σε θέση να επιλέξετε το καλύτερο εργαλείο για την κατάλληλη περίπτωση.

Κουμπί μετάβασης στην κορυφή