Αλλαγή Τύπου
Όπως είπαμε στην αρχή, η JavaScript είναι μια γλώσσα δυναμικού τύπου, που σημαίνει ότι μια μεταβλητή μπορεί να περιέχει δεδομένα διαφορετικού τύπου κατά τη διάρκεια της εκτέλεσης του προγράμματος.
Υπάρχουν δύο τρόποι για να αλλάξει ο τύπος μιας τιμής:
- Type Conversion (Type Casting)
- Type Coercion (Implicit Type Conversion)
Type Conversion
Με αυτόν τον όρο εννοούμε την εξαναγκασμένη αλλαγή τύπου μιας τιμής από τον προγραμματιστή. Αυτό γίνεται με τη χρήση των συναρτήσεων Number()
, String()
, Boolean()
.
Number()
Συνάρτηση που μετατρέπει μια τιμή σε αριθμό.
const x = "10";
console.log(Number(x)); // 10
Αν η τιμή δεν μπορεί να μετατραπεί σε αριθμό, τότε η συνάρτηση επιστρέφει την τιμή NaN
.
const x = "Hello";
console.log(Number(x)); // NaN
Γενικότερα οι κανόνες που ισχύουν για τη μετατροπή σε αριθμό είναι οι εξής:
Τιμή | Μετατρέπεται σε... |
---|---|
undefined | NaN |
null | 0 |
true | 1 |
false | 0 |
string | Μετατρέπεται σε αριθμό. Αν το string δεν περιέχει αριθμό, τότε μετατρέπεται σε NaN |
String()
Συνάρτηση που μετατρέπει μια τιμή σε αλφαριθμητικό.
const x = 10;
console.log(String(x)); // "10"
Boolean()
Συνάρτηση που μετατρέπει μια τιμή σε boolean.
Οι εξής τιμές μετατρέπονται σε false
:
false
0
""
(κενό string)null
undefined
NaN
Οποιαδήποτε άλλη τιμή μετατρέπεται σε true
.
const x = 0;
console.log(Boolean(x)); // false
const y = "Hello";
console.log(Boolean(y)); // true
Type Coercion
Με αυτόν τον όρο εννοούμε την αυτόματη αλλαγή τύπου μιας τιμής από την JavaScript. Αυτό συμβαίνει όταν δύο τιμές διαφορετικών τύπων συγκρίνονται μεταξύ τους.
Για παράδειγμα, όταν μια αριθμητική τιμή συγκρίνεται με μια αλφαριθμητική τιμή, η αλφαριθμητική τιμή μετατρέπεται σε αριθμό.
const x = 10;
const y = "10";
console.log(x == y); // true
Στο παραπάνω παράδειγμα, η τιμή της μεταβλητής y
μετατρέπεται σε αριθμό πριν γίνει η σύγκριση.
Συνένωση Τύπων
Όταν συνενώνουμε δύο αλφαριθμητικές τιμές με τον τελεστή +
, τότε οι τιμές μετατρέπονται σε αλφαριθμητικές.
const x = "Hello";
const y = "World";
console.log(x + y); // "HelloWorld"
Αν η μία τιμή είναι αριθμός, τότε η αλλη τιμή μετατρέπεται σε αριθμό.
const x = 10;
const y = "20";
console.log(x + y); // 30
Αν οι δύο τιμές είναι αριθμοί, τότε γίνεται αριθμητική πρόσθεση.
const x = 10;
const y = 20;
console.log(x + y); // 30