Η JavaScript υποστηρίζει διάφορους τύπους δεδομένων που χρησιμοποιούνται για την αναπαράσταση και την επεξεργασία δεδομένων στο πρόγραμμα. Οι βασικοί τύποι δεδομένων στη JavaScript είναι οι εξής:
- Αριθμητικός (Number): Χρησιμοποιείται για την αναπαράσταση αριθμητικών τιμών. Περιλαμβάνει ακέραιους αριθμούς (π.χ. 10) και δεκαδικούς αριθμούς (π.χ. 3.14).
- Συμβολοσειρά (String): Χρησιμοποιείται για την αναπαράσταση κειμένου. Οι συμβολοσειρές περικλείονται με εισαγωγικά (μονά ή διπλά). Για παράδειγμα: “Hello World”.
- Λογικός (Boolean): Αναπαριστά μια λογική τιμή, είτε αληθής (true) είτε ψευδής (false). Χρησιμοποιείται για λογικές συγκρίσεις και συνθήκες.
- Αντικείμενο (Object): Χρησιμοποιείται για την αναπαράσταση πιο πολύπλοκων δομών δεδομένων. Τα αντικείμενα περιλαμβάνουν ιδιότητες (properties) που αποτελούνται από ζεύγη “κλειδί-τιμή”. Για παράδειγμα:
var person = { name: "John", age: 30, email: "john@example.com" };
- Πίνακας (Array): Χρησιμοποιείται για την αναπαράσταση ομάδων από τιμές. Οι τιμές σε έναν πίνακα διατάσσονται με συγκεκριμένη σειρά και μπορούν να αντικατασταθούν ή να προστεθούν. Για παράδειγμα:
var numbers = [1, 2, 3, 4, 5];
- Καθολικές τιμές (null και undefined): Η τιμή null αναπαριστά την απουσία τιμής, ενώ η τιμή undefined αναπαριστά την απουσία καθορισμένης τιμής.
Αυτοί είναι οι βασικοί τύποι δεδομένων στη JavaScript. Μπορείτε να χρησιμοποιήσετε αυτούς τους τύπους για να αναπαραστήσετε και να επεξεργαστείτε δεδομένα στο πρόγραμμά σας.
Το έννοια των τύπων δεδομένων αναφέρεται στην κατηγοριοποίηση των δεδομένων με βάση τις ιδιότητες και τις λειτουργίες που μπορούν να εκτελέσουν. Κάθε τύπος δεδομένων ορίζει τον τρόπο με τον οποίο αποθηκεύεται, επεξεργάζεται και χρησιμοποιείται το δεδομένο στη μνήμη του υπολογιστή.
Η JavaScript είναι μια ασθενώς τυποποιημένη γλώσσα, που σημαίνει ότι δεν απαιτείται ορισμός τύπου δεδομένων για τις μεταβλητές. Αυτό σημαίνει ότι μια μεταβλητή μπορεί να αποθηκεύσει διαφορετικούς τύπους δεδομένων κατά τη διάρκεια της εκτέλεσης του προγράμματος.
Παρόλα αυτά, η JavaScript παρέχει τους βασικούς τύπους δεδομένων που περιγράφηκαν προηγουμένως, όπως αριθμητικούς, συμβολοσειρές, λογικούς, αντικείμενα και πίνακες, για να καλύψει τις περισσότερες ανάγκες προγραμματισμού.
Ο τρόπος με τον οποίο χειρίζεστε και αλληλεπιδράτε με τους τύπους δεδομένων καθορίζει την συμπεριφορά του προγράμματός σας. Καθένας από αυτούς τους τύπους δεδομένων έχει μοναδικές ιδιότητες και λειτουργίες που μπορείτε να εκμεταλλευτείτε για να επεξεργαστείτε και να αποθηκεύσετε τα δεδομένα σας.
Κατανοώντας τους τύπους δεδομένων και τη συμπεριφορά τους, μπορείτε να αναπτύξετε πιο προηγμένα προγράμματα και να επιτύχετε τις επιθυμητές λειτουργίες.
[adinserter block=”2″]
Στη JavaScript, οι μεταβλητές έχουν δυναμικούς τύπους. Αυτό σημαίνει ότι μια μεταβλητή μπορεί να χρησιμοποιηθεί για να αποθηκεύσει διάφορους τύπους δεδομένων κατά τη διάρκεια της εκτέλεσης του προγράμματος.
Για παράδειγμα, μπορείτε να αρχικοποιήσετε μια μεταβλητή ως αριθμό και αργότερα να την αλλάξετε για να περιέχει μια συμβολοσειρά ή ένα αντικείμενο. Η JavaScript επιτρέπει αυτήν την ευελιξία και αυτοματικά προσαρμόζει τον τύπο της μεταβλητής ανάλογα με το περιεχόμενο που της ανατίθεται.
Ας δούμε ένα παράδειγμα:
var x = 5; // Η μεταβλητή x περιέχει έναν αριθμό console.log(typeof x); // Εκτύπωση του τύπου της μεταβλητής x x = "Hello"; // Η μεταβλητή x τώρα περιέχει μια συμβολοσειρά console.log(typeof x); // Εκτύπωση του τύπου της μεταβλητής x x = { name: "John", age: 30 }; // Η μεταβλητή x τώρα περιέχει ένα αντικείμενο console.log(typeof x); // Εκτύπωση του τύπου της μεταβλητής x
Στο παράδειγμα αυτό, η μεταβλητή x
αρχικά περιέχει έναν αριθμό, αλλά αργότερα ανατίθεται μια συμβολοσειρά και ένα αντικείμενο. Η εντολή typeof
χρησιμοποιείται για να επιστρέψει τον τύπο της μεταβλητής x
.
Η δυναμικότητα των τύπων δεδομένων στη JavaScript επιτρέπει μεγαλύτερη ευελιξία κατά την ανάπτυξη προγραμμάτων, αλλά πρέπει να προσέχετε ώστε να μην ανατίθενται λανθασμένοι τύποι δεδομένων σε μεταβλητές, καθώς αυτό μπορεί να προκαλέσει απροσδόκητη συμπεριφορά του κώδικα.
Στη JavaScript, μια συμβολοσειρά (ή κείμενο) είναι μια σειρά χαρακτήρων, όπως για παράδειγμα “John Doe”.
Οι συμβολοσειρές γράφονται με εισαγωγικά. Μπορείτε να χρησιμοποιήσετε ενιαία (μονά) ή διπλά εισαγωγικά για να ορίσετε μια συμβολοσειρά.
Ας δούμε μερικά παραδείγματα:
var firstName = "John"; // Συμβολοσειρά με διπλά εισαγωγικά var lastName = 'Doe'; // Συμβολοσειρά με ενιαία (μονά) εισαγωγικά console.log(firstName); // Εκτύπωση της μεταβλητής firstName console.log(lastName); // Εκτύπωση της μεταβλητής lastName
Στο παράδειγμα αυτό, οι μεταβλητές firstName
και lastName
ανατίθενται σε συμβολοσειρές με τη χρήση διπλών και ενιαίων εισαγωγικών αντίστοιχα. Οι συμβολοσειρές μπορούν να χρησιμοποιηθούν για να αποθηκεύσουν κείμενο και να εκτυπωθούν στην κονσόλα με τη χρήση της εντολής console.log()
.
Μπορείτε να χρησιμοποιήσετε είσοδο χρήστη, να συνδυάσετε συμβολοσειρές με τη χρήση του τελεστή +
, να αποκτήσετε το μήκος μιας συμβολοσειράς και να εκτελέσετε πολλές άλλες λειτουργίες με τις συμβολοσειρές στη JavaScript.
Μπορείτε να χρησιμοποιήσετε εισαγωγικά μέσα σε μια συμβολοσειρά, όσον καιρό δεν ταιριάζουν με τα εισαγωγικά που περικλείουν τη συμβολοσειρά. Αυτό μας επιτρέπει να συμπεριλάβουμε εισαγωγικά ως μέρος του κειμένου εντός της συμβολοσειράς.
Υπάρχουν δύο τρόποι για να επιτευχθεί αυτό:
- Χρησιμοποιώντας διαφορετικά είδη εισαγωγικών:
var message = "He said, 'Hello!'"; console.log(message);
Στο παράδειγμα αυτό, χρησιμοποιούμε διπλά εισαγωγικά για να περικλείσουμε τη συμβολοσειρά, αλλά χρησιμοποιούμε μονά εισαγωγικά εντός της συμβολοσειράς για να δηλώσουμε το κείμενο που εμφανίζεται.
- Χρησιμοποιώντας απόδεσμο (escape) με το χαρακτήρα
\
:
var message = 'He said, \'Hello!\''; console.log(message);
Στο παράδειγμα αυτό, χρησιμοποιούμε μονά εισαγωγικά για να περικλείσουμε τη συμβολοσειρά και χρησιμοποιούμε τον χαρακτήρα \
(απόδεσμο) πριν από το μονό εισαγωγικό μέσα στη συμβολοσειρά για να το αποδράσουμε.
Με αυτούς τους τρόπους, μπορείτε να συμπεριλάβετε εισαγωγικά μέσα σε μια συμβολοσειρά στη JavaScript χωρίς να προκαλέσετε σύγχυση στον διερμηνέα της γλώσσας.
Όλοι οι αριθμοί στη JavaScript αποθηκεύονται ως δεκαδικοί αριθμοί (floating point).
Οι αριθμοί μπορούν να γραφούν με ή χωρίς δεκαδικά ψηφία:
var integerNumber = 10; // Ακέραιος αριθμός var decimalNumber = 3.14; // Δεκαδικός αριθμός console.log(integerNumber); // Εκτύπωση της μεταβλητής integerNumber console.log(decimalNumber); // Εκτύπωση της μεταβλητής decimalNumber
Στο παράδειγμα αυτό, οι μεταβλητές integerNumber
και decimalNumber
ανατίθενται σε ακέραιους και δεκαδικούς αριθμούς αντίστοιχα. Η εντολή console.log()
χρησιμοποιείται για να εκτυπώσει τις μεταβλητές στην κονσόλα.
Παρατηρήστε ότι, ακόμα και αν ένας αριθμός δεν έχει δεκαδικά ψηφία, η JavaScript τον αποθηκεύει ως δεκαδικό αριθμό.
Οι πολύ μεγάλοι ή πολύ μικροί αριθμοί μπορούν να γραφούν με επιστημονική (εκθετική) μορφή, γνωστή και ως επιστημονική σημείωση:
var largeNumber = 1.5e6; // 1.5 * 10^6 var smallNumber = 1.2e-4; // 1.2 * 10^(-4) console.log(largeNumber); // Εκτύπωση της μεταβλητής largeNumber console.log(smallNumber); // Εκτύπωση της μεταβλητής smallNumber
Στο παράδειγμα αυτό, οι μεταβλητές largeNumber
και smallNumber
ανατίθενται σε αριθμούς με επιστημονική μορφή. Η τιμή 1.5e6
αναπαριστά τον αριθμό 1.5
πολλαπλασιασμένο με 10^6
(δηλαδή 1.5 * 10^6
), ενώ η τιμή 1.2e-4
αναπαριστά τον αριθμό 1.2
πολλαπλασιασμένο με 10^(-4)
(δηλαδή 1.2 * 10^(-4)
).
Η επιστημονική σημείωση είναι χρήσιμη όταν έχουμε πολύ μεγάλους ή πολύ μικρούς αριθμούς και θέλουμε να τους αναπαραστήσουμε με μια συνοπτική μορφή.
[adinserter block=”3″]
Στη JavaScript, όλοι οι αριθμοί αποθηκεύονται σε μορφή κινητής υποδιαστολής (floating-point) 64-bit. Αυτό σημαίνει ότι μπορούν να αναπαρασταθούν αριθμοί με πεπερασμένο αριθμό ψηφίων μετά το δεκαδικό σημείο και υπάρχει ένα όριο στο μέγεθος των ακεραίων που μπορούν να αναπαρασταθούν από έναν τυπικό αριθμό JavaScript.
Ωστόσο, από την έκδοση ES2020 (ECMAScript 2020) και μετά, εισάγεται το νέο τύπο δεδομένων BigInt στη JavaScript. Το BigInt μπορεί να χρησιμοποιηθεί για να αποθηκεύσει ακέραιες τιμές που είναι πολύ μεγάλες για να αναπαρασταθούν από έναν τυπικό αριθμό JavaScript.
Για να ορίσετε έναν αριθμό BigInt, ακολουθήστε την τιμή με το γράμμα “n” στο τέλος της:
var bigNumber = 1234567890123456789012345678901234567890n; console.log(bigNumber); // Εκτύπωση της μεταβλητής bigNumber
Στο παράδειγμα αυτό, η μεταβλητή bigNumber
ανατίθεται με έναν αριθμό BigInt που είναι πολύ μεγάλος για να αναπαρασταθεί από έναν τυπικό αριθμό JavaScript. Ο τελεστής “n” στο τέλος της τιμής δείχνει ότι αυτός ο αριθμός πρέπει να αντιμετωπιστεί ως BigInt.
Οι αριθμοί BigInt υποστηρίζουν όλες τις αριθμητικές λειτουργίες που είναι διαθέσιμες για τους τυπικούς αριθμούς JavaScript, αλλά πρέπει να προσέξετε τη συμβατότητα με άλλους τύπους δεδομένων και την απόδοση των υπολογισμών με αριθμούς BigInt.
Οι λογικές τιμές στη JavaScript μπορούν να έχουν μόνο δύο τιμές: την τιμή true ή false.
Οι λογικές τιμές χρησιμοποιούνται για την αναπαράσταση της αλήθειας ή της ψευδαισθήσεως μιας πρότασης στην JavaScript. Μπορούν να χρησιμοποιηθούν σε συνθήκες και λογικές εκφράσεις για τον έλεγχο της ροής του προγράμματος.
Ας δούμε μερικά παραδείγματα:
var isTrue = true; // Λογική τιμή true var isFalse = false; // Λογική τιμή false console.log(isTrue); // Εκτύπωση της μεταβλητής isTrue console.log(isFalse); // Εκτύπωση της μεταβλητής isFalse
Στο παράδειγμα αυτό, οι μεταβλητές isTrue
και isFalse
ανατίθενται σε λογικές τιμές true και false αντίστοιχα. Η εντολή console.log()
χρησιμοποιείται για να εκτυπώσει τις μεταβλητές στην κονσόλα.
Οι λογικές τιμές είναι χρήσιμες για τον έλεγχο των συνθηκών και την εκτέλεση κώδικα βάσει της αποτίμησής τους.
Στη JavaScript, οι πίνακες (arrays) γράφονται με τη χρήση αγκύλων αγκύλεων [ ]
.
Τα στοιχεία του πίνακα διαχωρίζονται με κόμματα.
Ας δούμε ένα παράδειγμα:
var fruits = ["Apple", "Banana", "Orange"]; // Πίνακας με φρούτα console.log(fruits); // Εκτύπωση του πίνακα fruits
Στο παράδειγμα αυτό, ο πίνακας fruits
περιέχει τρία στοιχεία: “Apple”, “Banana” και “Orange”. Ο πίνακας ορίζεται με τη χρήση αγκύλων αγκύλεων και τα στοιχεία διαχωρίζονται με κόμματα.
Μπορείτε να αποκτήσετε πρόσβαση σε συγκεκριμένα στοιχεία του πίνακα χρησιμοποιώντας τη σύνταξη array[index]
, όπου index
είναι ο αριθμός της θέσης του στοιχείου που θέλετε να αποκτήσετε. Οι θέσεις των στοιχείων σε έναν πίνακα αριθμούνται από το 0.
console.log(fruits[0]); // Εκτύπωση του πρώτου στοιχείου του πίνακα fruits
Στο παράδειγμα αυτό, εκτυπώνουμε το πρώτο στοιχείο του πίνακα fruits
, που είναι “Apple”.
Στη JavaScript, τα αντικείμενα (objects) γράφονται με τη χρήση αγκύλων αγκύλεων { }
.
Οι ιδιότητες του αντικειμένου γράφονται ως ζεύγη όνομα:τιμή, διαχωρισμένα με κόμματα.
Ας δούμε ένα παράδειγμα:
var person = { name: "John", age: 30, city: "New York" }; // Αντικείμενο με ιδιότητες προσώπου console.log(person); // Εκτύπωση του αντικειμένου person
Στο παράδειγμα αυτό, το αντικείμενο person
έχει τρεις ιδιότητες: “name” με την τιμή “John”, “age” με την τιμή 30 και “city” με την τιμή “New York”. Το αντικείμενο ορίζεται με τη χρήση αγκύλων αγκύλεων και οι ιδιότητες διαχωρίζονται με κόμματα.
Μπορείτε να αποκτήσετε πρόσβαση σε μια συγκεκριμένη ιδιότητα του αντικειμένου χρησιμοποιώντας τη σύνταξη object.property
, όπου object
είναι το όνομα του αντικειμένου και property
είναι το όνομα της ιδιότητας που θέλετε να αποκτήσετε. Μπορείτε επίσης να αποκτήσετε πρόσβαση σε μια ιδιότητα χρησιμοποιώντας τη σύνταξη object["property"]
.
console.log(person.name); // Εκτύπωση της ιδιότητας "name" του αντικειμένου person console.log(person["age"]); // Εκτύπωση της ιδιότητας "age" του αντικειμένου person
Στο παράδειγμα αυτό, εκτυπώνουμε την ιδιότητα “name” του αντικειμένου person
, που είναι “John”, και την ιδιότητα “age” του αντικειμένου person
, που είναι 30.
Μπορείτε να χρησιμοποιήσετε τον τελεστή typeof
στη JavaScript για να βρείτε τον τύπο μιας μεταβλητής ή μιας έκφρασης.
[adinserter block=”4″]
Ο τελεστής typeof
επιστρέφει τον τύπο μιας μεταβλητής ή μιας έκφρασης ως αποτέλεσμα. Οι πιθανοί τύποι που μπορεί να επιστρέψει ο τελεστής typeof
είναι:
- “undefined” για μη ορισμένες μεταβλητές
- “boolean” για λογικές τιμές (true ή false)
- “number” για αριθμητικές τιμές
- “string” για συμβολοσειρές
- “object” για αντικείμενα και πίνακες
- “function” για συναρτήσεις
- “symbol” για σύμβολα (εισήγαγε στην ECMAScript 6)
Ας δούμε μερικά παραδείγματα:
var name = "John"; var age = 30; var isStudent = true; var person = { name: "John", age: 30 }; console.log(typeof name); // Εκτύπωση του τύπου της μεταβλητής name console.log(typeof age); // Εκτύπωση του τύπου της μεταβλητής age console.log(typeof isStudent); // Εκτύπωση του τύπου της μεταβλητής isStudent console.log(typeof person); // Εκτύπωση του τύπου της μεταβλητής person
Στο παράδειγμα αυτό, εκτυπώνουμε τον τύπο της μεταβλητής name
(που είναι “string”), της μεταβλητής age
(που είναι “number”), της μεταβλητής isStudent
(που είναι “boolean”) και της μεταβλητής person
(που είναι “object”).
Ο τελεστής typeof
είναι χρήσιμος για να ελέγξετε τον τύπο μιας μεταβλητής πριν εκτελέσετε κάποιες λειτουργίες ή να προσαρμόσετε την συμπεριφορά του προγράμματος βάσει του τύπου της μεταβλητής.
Ας υποθέσουμε ότι έχουμε τον παρακάτω κώδικα:
var name = "John"; var age = 30; var isStudent = true; var person = { name: "John", age: 30 }; console.log(typeof name); console.log(typeof age); console.log(typeof isStudent); console.log(typeof person);
Το αποτέλεσμα εκτέλεσης αυτού του κώδικα θα είναι:
string number boolean object
Στο παράδειγμα αυτό, έχουμε τις μεταβλητές name
, age
, isStudent
και person
. Ο τελεστής typeof
χρησιμοποιείται για να επιστρέψει τον τύπο της κάθε μεταβλητής και εκτυπώνεται στην κονσόλα με τη χρήση της εντολής console.log()
. Όπως μπορούμε να δούμε από τα αποτελέσματα, η μεταβλητή name
έχει τύπο “string”, η μεταβλητή age
έχει τύπο “number”, η μεταβλητή isStudent
έχει τύπο “boolean” και η μεταβλητή person
έχει τύπο “object”.
Στη JavaScript, μια μεταβλητή που δεν έχει ανατεθεί κάποια τιμή έχει την τιμή “undefined”. Ο τύπος της μεταβλητής είναι επίσης “undefined”.
Ας δούμε ένα παράδειγμα:
var x; console.log(x); // Εκτύπωση της μεταβλητής x console.log(typeof x); // Εκτύπωση του τύπου της μεταβλητής x
Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι:
undefined undefined
Στο παράδειγμα αυτό, η μεταβλητή x
δηλώνεται χωρίς να της ανατεθεί κάποια τιμή. Όταν εκτυπώνουμε τη μεταβλητή x
, θα δούμε ότι έχει την τιμή “undefined”. Επίσης, όταν εκτυπώνουμε τον τύπο της μεταβλητής x
, θα δούμε ότι είναι “undefined”.
Η τιμή “undefined” χρησιμοποιείται για να υποδείξει ότι μια μεταβλητή δεν έχει ανατεθεί κάποια τιμή ή ότι ένα αντικείμενο ή ιδιότητα δεν υπάρχει.
Στη JavaScript, μια άδεια τιμή διαφέρει από την απροσδιόριστη τιμή (undefined).
Μια άδεια συμβολοσειρά έχει μια έγκυρη τιμή και έναν τύπο δεδομένων. Αντιπροσωπεύει ένα κενό κείμενο ή μια απουσία τιμής.
Ας δούμε μερικά παραδείγματα:
var emptyString = ""; // Άδεια συμβολοσειρά var nullValue = null; // Άδεια τιμή var undefinedValue; // Απροσδιόριστη τιμή console.log(emptyString); // Εκτύπωση της άδειας συμβολοσειράς console.log(typeof emptyString); // Εκτύπωση του τύπου δεδομένων της άδειας συμβολοσειράς console.log(nullValue); // Εκτύπωση της άδειας τιμής console.log(typeof nullValue); // Εκτύπωση του τύπου δεδομένων της άδειας τιμής console.log(undefinedValue); // Εκτύπωση της απροσδιόριστης τιμής console.log(typeof undefinedValue); // Εκτύπωση του τύπου δεδομένων της απροσδιόριστης τιμής
Στο παράδειγμα αυτό, οι μεταβλητές emptyString
, nullValue
και undefinedValue
περιέχουν αντίστοιχα ένα κενό κείμενο, μια άδεια τιμή και μια απροσδιόριστη τιμή. Η εντολή console.log()
χρησιμοποιείται για να εκτυπώσει τις τιμές των μεταβλητών και η εντολή typeof
χρησιμοποιείται για να επιστρέψει τον τύπο δεδομένων της κάθε μεταβλητής.
Παρατηρήστε ότι η άδεια συμβολοσειρά έχει μια έγκυρη τιμή (ένα κενό κείμενο), ενώ η άδεια τιμή και η απροσδιόριστη τιμή αντιπροσωπεύουν μια απουσία τιμής.