Αρχικά Τύποι του ECMAScript
- Προηγούμενη Σελίδα Χρησιμοποιήσιμες τιμές του ECMAScript
- Επόμενη Σελίδα Μετατροπές Τύπων του ECMAScript
Το ECMAScript έχει 5 αρχικούς τύπους (primitive type), δηλαδή Undefined, Null, Boolean, Number και String.
Επεξεργαστής typeof
Ο επεξεργαστής typeof έχει ένα παράμέτρο, δηλαδή τη μεταβλητή ή την τιμή που πρέπει να ελεγχθεί. Για παράδειγμα:
var sTemp = "test string"; alert (typeof sTemp); //έξοδος "string" alert (typeof 86); //έξοδος "number"
Η χρήση του επεξεργαστή typeof για μεταβλητές ή τιμές θα επιστρέψει έναν από τους εξής τιμές:
- undefined - αν η μεταβλητή είναι τύπου Undefined
- boolean - αν η μεταβλητή είναι τύπου Boolean
- number - αν η μεταβλητή είναι τύπου Number
- string - αν η μεταβλητή είναι τύπου String
- object - αν η μεταβλητή είναι είδος αναφοράς ή τύπου Null
Σημείωση:Μπορεί να ρωτήσετε, γιατί ο επεξεργαστής typeof επιστρέφει "Object" για την τιμή null. Αυτό είναι ένα σφάλμα στην αρχική υλοποίηση του JavaScript, το οποίο συνεχίστηκε από το ECMAScript. Τώρα, το null θεωρείται ως υποδείκτης αντικειμένων, εξηγώντας αυτή τη σύγκρουση, αλλά τεχνικά παραμένει αρχικός τύπος.
Τύπος Undefined
Ως προηγουμένως αναφέρθηκε, ο τύπος Undefined έχει μόνο μια τιμή, δηλαδή undefined. Όταν η μεταβλητή δεν έχει�始化τεί, η προεπιλεγμένη τιμή της μεταβλητής είναι undefined.
var oTemp;
Η προηγούμενη γραμμή κώδικα δηλώνει τη μεταβλητή oTemp χωρίς αρχική τιμή. Η μεταβλητή αυτή θα αποδίδεται η τιμή "undefined", δηλαδή η litteral του τύπου undefined. Μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα για να ελέγξετε αν η τιμή της μεταβλητής είναι ίση με undefined:}
var oTemp; alert(oTemp == undefined);
Αυτός ο κώδικας θα εμφανίσει "true", που δείχνει ότι αυτές οι δύο τιμές είναι πράγματι ισότιμες. Μπορείτε επίσης να χρησιμοποιήσετε τον οπεράτορα typeof για να εμφανίσετε ότι η τιμή της μεταβλητής είναι undefined:
var oTemp; alert(typeof oTemp); // Εκτύπωση "undefined"
Σημείωση:Η τιμή undefined δεν είναι ίση με την ανεντοπισμένη τιμή. Ωστόσο, ο οπεράτορας typeof δεν διακρίνει πραγματικά αυτές τις δύο τιμές. Σκεφτείτε τον παρακάτω κώδικα:
var oTemp; alert(typeof oTemp); // Εκτύπωση "undefined" alert(typeof oTemp2); // Εκτύπωση "undefined"
Ο παραπάνω κώδικας εκτυπώνει "undefined" για τις δύο μεταβλητές, ακόμα και αν μόνο η μεταβλητή oTemp2 δεν έχει δηλωθεί. Αν χρησιμοποιηθεί οποιοσδήποτε άλλος οπεράτορας εκτός του typeof για την oTemp2, θα προκαλέσει σφάλμα, επειδή οι άλλοι οπεράτορες μπορούν να χρησιμοποιηθούν μόνο σε δηλωμένες μεταβλητές.
Για παράδειγμα, το παρακάτω κώδικας θα προκαλέσει σφάλμα:
var oTemp; alert(oTemp2 == undefined);
Όταν μια συνάρτηση δεν έχει καθορισμένη επιστροφή, επιστρέφεται επίσης η τιμή "undefined", όπως παρακάτω:
function testFunc() { {} alert(testFunc() == undefined); // Εκτύπωση "true"
Ο τύπος Null
Ενας άλλος τύπος που έχει μόνο μια τιμή είναι το Null, το οποίο έχει μόνο μια ειδική τιμή null, δηλαδή η litteral του. Η τιμή undefined είναι στην πραγματικότητα μια προέκταση από την τιμή null, οπότε το ECMAScript τις ορίζει ως ισότιμες.
alert(null == undefined); // Εκτύπωση "true"
Αν και αυτές οι τιμές είναι ισότιμες, η σημασία τους είναι διαφορετική. Ο undefined είναι η τιμή που αποδίδεται σε μια μεταβλητή που έχει δηλωθεί αλλά δεν έχει�始化, ενώ το null χρησιμοποιείται για να εκφράσει αντικείμενα που δεν υπάρχουν (αυτό έχει αναφερθεί απλώς κατά τη συζήτηση για τον οπεράτορα typeof). Αν μια συνάρτηση ή μέθοδος πρέπει να επιστρέψει ένα αντικείμενο και δεν μπορεί να βρεθεί το αντικείμενο αυτό, τότε συνήθως επιστρέφεται το null.
Ο τύπος Boolean
Ο τύπος Boolean είναι ένας από τους πιο συχνά χρησιμοποιούμενους τύπους στο ECMAScript. Έχει δύο τιμές, true και false (δηλαδή δύο litterals Boolean).
Αν και το false δεν ισούται με 0, το 0 μπορεί να μετατραπεί σε false όταν είναι απαραίτητο, έτσι και οι δύο μπορούν να χρησιμοποιηθούν με ασφάλεια σε boolean εξισώσεις.
var bFound = true; var bLost = false;
Ο τύπος Number
Ο πιο ειδικός τύπος που ορίζεται από το ECMA-262 είναι ο τύπος Number. Αυτός ο τύπος μπορεί να εκφράσει 32-bit ακέραιους και 64-bit δεκτικές τιμές.
Οποιαδήποτε αριθμητική τιμή που εισάγεται άμεσα (και όχι από άλλη μεταβλητή) θεωρείται αριθμητική τιμή του τύπου Number. π.χ., ο παρακάτω κώδικας δηλώνει μεταβλητή που περιέχει ακέραιο, ο οποίος ορίζεται από το αριθμητικό τύπο 86:
var iNum = 86;
Οι οκταδικοί και δωδεκαδικοί αριθμητικοί τύποι
Οι ακέραιοι μπορούν επίσης να εκφραστούν ως οκταδικοί (με βάση το 8) ή δωδεκαδικοί (με βάση το 16) αριθμητικοί τύποι. Ο οκταδικός αριθμητικός τύπος πρέπει να ξεκινά με 0, και οι αριθμοί που ακολουθούν μπορούν να είναι οποιοσδήποτε οκταδικός αριθμός (0-7), όπως φαίνεται στον παρακάτω κώδικα:
var iNum = 070; //070 ισούται με το δεκαδικό 56
Για να δημιουργηθεί οκταδικός αριθμητικός τύπος, το πρώτο ψηφίο πρέπει να είναι 0, ακολουθούμενο από τον χαρακτήρα x, και στη συνέχεια οποιοσδήποτε οκταδικός αριθμός (0-7). Αυτοί οι χαρακτήρες μπορούν να είναι μεγάλους ή μικρούς. π.χ.:
var iNum = 0x1f; //0x1f ισούται με το δεκαδικό 31 var iNum = 0xAB; //0xAB ισούται με το δεκαδικό 171
Σημείωση:Αν και όλοι οι ακέραιοι μπορούν να εκφραστούν ως οκταδικοί ή δωδεκαδικοί αριθμητικοί τύποι, όλες οι μαθηματικές πράξεις επιστρέφουν δεκαδικά αποτελέσματα.
Οι δεκτικές αριθμητικές τιμές
Για να ορίσουμε δεκτικές τιμές, πρέπει να περιλαμβάνουμε τον σημείο και τουλάχιστον ένας αριθμός μετά το σημείο (π.χ., χρησιμοποιώντας 1.0 αντί για 1). Αυτό θεωρείται δεκτική αριθμητική τιμή. π.χ.:
var fNum = 5.0;
Η ενδιαφέρουσα πτυχή των δεκτικών αριθμητικών τιμών είναι ότι πριν από τον υπολογισμό, πραγματικά αποθηκεύονται ως αλφαριθμητικές συμβολοσειρές.
Το σύστημα των αριθμητικών διαγραμμάτων
Για πολύ μεγάλα ή πολύ μικρά αριθμούς, μπορεί να χρησιμοποιηθεί το σύστημα των αριθμητικών διαγραμμάτων για να εκφραστούν δεκτικές αριθμητικές τιμές, μπορεί να εκφραστεί ένας αριθμός ως αριθμός (περιλαμβανομένων των δεκαδικών αριθμών)加上 e (ή E), ακολουθούμενο από την εκατομονάδα 10. π.χ.:
var fNum = 5.618e7
Αυτός ο σύμβολος υποδηλώνει τον αριθμό 56180000. Με τη μετατροπή του συστήματος των αριθμητικών διαγραμμάτων σε εξισώσεις, μπορούμε να βρούμε αυτόν τον αριθμό: 5.618 x 107。
Επίσης, οι πολύ μικρές αριθμοί μπορούν να εκφραστούν με το σύστημα των αριθμητικών διαγραμμάτων, π.χ. 0.00000000000000008 μπορεί να εκφραστεί ως 8-e17(Εδώ, το 10 έχει φτάσει στον -17ο όγκο, σημαίνει ότι πρέπει να διαιρεθεί το 10 17 φορές). Η ECMAScript μετατρέπει αυτόματα τους δεκτούς αριθμούς με 6 ή περισσότερους προπορευόμενους μηδενικά σε μορφή επιστημονικής εκδήλωσης.
Σημείωση:Οι τιμές των δεκτών αριθμών μπορούν επίσης να αποθηκευτούν με τη μορφή 64-bit IEEE 754, κάτι που σημαίνει ότι οι δεκαδικοί αριθμοί μπορούν να έχουν μέχρι 17 δεκαδικά ψηφία. Οι τιμές μετά τα 17 ψηφία θα κοπούν, προκαλώντας μικρές μαθηματικές αστερόαιμες.
Ειδικοί τύποι του Number
Επίσης, ορισμένοι ειδικοί τύποι έχουν οριστεί ως τύπος Number. Οι δύο πρώτοι είναι ο Number.MAX_VALUE και ο Number.MIN_VALUE, οι οποίοι καθορίζουν τα εξωτερικά όρια του συνόλου των τιμών του Number. Όλοι οι αριθμοί ECMAScript πρέπει να βρίσκονται μεταξύ αυτών των τιμών. Ωστόσο, τα αποτελέσματα των υπολογισμών δεν χρειάζεται να βρίσκονται μεταξύ αυτών των τιμών.
Όταν ο αριθμός που δημιουργείται στον υπολογισμό είναι μεγαλύτερος από το Number.MAX_VALUE, του δίνεται η τιμή του Number.POSITIVE_INFINITY, που σημαίνει ότι δεν υπάρχει άλλη αριθμητική τιμή. Επίσης, ο υπολογισμός που δημιουργείται όταν η τιμή είναι μικρότερη από το Number.MIN_VALUE θα του δοθεί η τιμή του Number.NEGATIVE_INFINITY, επίσης σημαίνει ότι δεν υπάρχει άλλη αριθμητική τιμή. Αν ο υπολογισμός επιστρέψει άπειρο, η δημιουργηθείσα τιμή δεν μπορεί να χρησιμοποιηθεί σε άλλους υπολογισμούς.
Επιπλέον, υπάρχουν ειδικοί τύποι που εκφράζουν τον άπειρο αριθμό, όπως αναμένετε, δηλαδή ο Infinity. Το Number.POSITIVE_INFINITY έχει την τιμή του Infinity. Το Number.NEGATIVE_INFINITY έχει την τιμή του -Infinity.
Επειδή οι αριθμοί άπειρου μεγέθους μπορούν να είναι και θετικοί και αρνητικοί, υπάρχει ένας τρόπος να προσδιοριστεί αν ένας αριθμός είναι περιορισμένος (όχι ότι δοκιμάζεται κάθε άπειρος αριθμός). Μπορείτε να καλέσετε τη μέθοδο isFinite() για οποιονδήποτε αριθμό, για να διασφαλίσετε ότι ο αριθμός δεν είναι άπειρος. Για παράδειγμα:
var iResult = iNum * some_really_large_number; if (isFinite(iResult)) { alert("finite"); {} else { alert("infinite"); {}
Ο τελευταίος ειδικός τύπος είναι NaN, ο οποίος σημαίνει 'Not a Number'. Το NaN είναι ένα παράξενο ειδικός τύπος. Συνήθως, αυτή η κατάσταση συμβαίνει όταν η μετατροπή τύπου (String, Boolean κ.λπ.) αποτύχει. Για παράδειγμα, η μετατροπή της λέξης 'blue' σε αριθμητικό τύπο αποτύχει, επειδή δεν υπάρχει ισοδύναμος αριθμητικός τύπος. Όπως και ο άπειρος, το NaN δεν μπορεί να χρησιμοποιηθεί σε αριθμητικές υπολογισμούς. Άλλη παράξενη ιδιότητα του NaN είναι ότι δεν είναι ίδιο με τον εαυτό του, κάτι που σημαίνει ότι το παρακάτω κώδικας θα επιστρέψει false:
alert(NaN == NaN); //Εκτύπωση "false"
Για αυτόν τον λόγο, δεν προτείνεται η χρήση της τιμής NaN. Η συνάρτηση isNaN() κάνει σχετικά καλά τη δουλειά της:
alert(isNaN("blue")); //Εκτύπωση "true" alert(isNaN("666")); //Εκτύπωση "false"
Τύπος String
Η μοναδικότητα του τύπου String είναι ότι είναι ο μόνος πρωτογενής τύπος χωρίς σταθερό μέγεθος. Μπορεί να αποθηκεύσει 0 ή περισσότερους χαρακτήρες Unicode, με 16-δωναδικούς αριθμούς (το Unicode είναι μια διεθνής συλλογή χαρακτήρων, θα συζητηθεί σε αυτό το σεμινάριο).
Κάθε χαρακτήρας στη συμβολοσειρά έχει μια συγκεκριμένη θέση, η πρώτη χαρακτήρας ξεκινά από την θέση 0, ο δεύτερος χαρακτήρας στην θέση 1, και ούτω καθεξής. Αυτό σημαίνει ότι η θέση του τελευταίου χαρακτήρα στη συμβολοσειρά είναι πάντα η αριθμητική απόδειξη της μήκους της συμβολοσειράς - 1:

Οι γραμματικές συμβολοσειρές είναι δηλωμένες με διπλές ή μονές κεραίες ("), ενώ το Java χρησιμοποιεί διπλές κεραίες για τις συμβολοσειρές και μονές κεραίες για τους χαρακτήρες. Ωστόσο, επειδή το ECMAScript δεν έχει τύπο χαρακτήρα, μπορεί να χρησιμοποιηθεί οποιαδήποτε από αυτές τις δύο δήλωσης. Για παράδειγμα, οι δύο παρακάτω γραμμές κώδικα είναι ισχύουσες:
var sColor1 = "red"; var sColor2 = 'red';
Ο τύπος String περιλαμβάνει επίσης διάφορα γραμματικά στοιχεία, οι προγραμματιστές Java, C και Perl πρέπει να είναι πολύ καλά εξοικειωμένοι με αυτά.
Παρακάτω αναφέρονται τα γραμματικά στοιχεία του ECMAScript:
γραμματικός | σχεδιασμός |
---|---|
\n | συγχώνευση |
\t | tab |
\b | χώρος |
\r | παράθυρο |
\f | πηγή |
\\\\ | αντίθετη κλίση |
\' | μια κεραία |
\" | διπλές κεραίες |
\0nnn | οκταδικός κώδικας nnn προσδιορίζει τον χαρακτήρα (n είναι ένας οκταδικός αριθμός από 0 έως 7) |
\xnn | δεκαεξαδικός κώδικας nn προσδιορίζει τον χαρακτήρα (n Είναι ένας δεκαεξαδικός αριθμός από 0 έως F) |
\unnnn | δεκαεξαδικός κώδικας nnnn προσδιορίζει τον χαρακτήρα Unicode (n Είναι ένας δεκαεξαδικός αριθμός από 0 έως F) |
- Προηγούμενη Σελίδα Χρησιμοποιήσιμες τιμές του ECMAScript
- Επόμενη Σελίδα Μετατροπές Τύπων του ECMAScript