Η συνάρτηση isFinite
Η συνάρτηση isFinite χρησιμοποιείται για τον έλεγχο της παραμέτρου
ως προς το αν είναι πεπερασμένος αριθμός (δηλαδή
όχι συμβολοσειρά, πίνακας κ.λπ. και όχι συν
ή πλην άπειρο).
Πώς λειτουργεί αυτή η συνάρτηση: θα επιστρέψει false,
εάν ο αριθμός είναι συν ή πλην άπειρο
(δηλαδή Infinity)
ή όχι αριθμός (δηλαδή NaN),
σε άλλες περιπτώσεις θα επιστρέψει true.
Δηλαδή, συμβολοσειρές, πίνακες κ.λπ. θα μετατραπούν
σε NaN και κατά συνέπεια θα επιστρέψουν false.
Ωστόσο, υπάρχουν εξαιρέσεις: η κενή συμβολοσειρά
'' επιστρέφει true, η συμβολοσειρά με κενά ' '
επιστρέφει επίσης true, το null
επιστρέφει true, για τις τιμές true και false
επιστρέφεται επίσης true.
Αυτό συμβαίνει επειδή αυτές οι τιμές
μετατρέπονται σε αριθμούς, και όχι σε NaN.
Εάν χρειάζεστε έναν πραγματικά ακριβή έλεγχο
για αριθμό, ο οποίος δεν θεωρεί αριθμό τη συμβολοσειρά
από κενά, τις λογικές και τις ειδικές τιμές
- χρησιμοποιήστε την ακόλουθη συνάρτηση isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Ας δούμε πώς λειτουργεί.
Η συνάρτηση isFinite μετατρέπει την παράμετρο
σε αριθμό και επιστρέφει true, εάν αυτή δεν είναι Infinity,
-Infinity ή NaN.
Έτσι, το δεξί μέρος θα αποκλείσει τις προφανώς
μη αριθμητικές τιμές, αλλά θα αφήσει τέτοιες τιμές
όπως το true, το false, το null, την κενή συμβολοσειρά '' και
τη συμβολοσειρά με κενά, καθώς μετατρέπονται σωστά
σε αριθμούς.
Για να αποκλειστούν αυτές οι τιμές, χρειάζεται η συνάρτηση
parseFloat,
η οποία για το true, το false, το null, το '', το ' '
θα επιστρέψει NaN. Έτσι λειτουργεί η συνάρτηση parseFloat: αυτή
μετατρέπει την παράμετρο σε συμβολοσειρά, δηλαδή το true,
το false, το null γίνονται 'true', 'false',
'null', και στη συνέχεια διαβάζει από αυτήν τον αριθμό,
ενώ η κενή συμβολοσειρά και η συμβολοσειρά με κενά
δίνουν NaN. Στη συνέχεια, το αποτέλεσμα της parseFloat επεξεργάζεται
με τη βοήθεια της !isNaN,
για να πάρουμε true ή false αντί για NaN.
Ως αποτέλεσμα, αποκλείονται όλα, εκτός από συμβολοσειρές-αριθμούς
και συνηθισμένους αριθμούς.
Σύνταξη
isFinite(τιμή);
Παράδειγμα
Τώρα η isFinite θα εμφανίσει true,
καθώς η παράμετρος είναι αριθμός:
let num = 3;
console.log(isFinite(num));
Αποτέλεσμα εκτέλεσης κώδικα:
true
Παράδειγμα
Τώρα η isFinite θα εμφανίσει false,
καθώς η παράμετρος δεν είναι αριθμός:
let num = 'abcde';
console.log(isFinite(num));
Αποτέλεσμα εκτέλεσης κώδικα:
false
Παράδειγμα
Τώρα η isFinite θα εμφανίσει false,
καθώς η παράμετρος είναι άπειρο:
let num = Infinity;
console.log(isFinite(num));
Αποτέλεσμα εκτέλεσης κώδικα:
false
Παράδειγμα
Τώρα η isFinite θα εμφανίσει false,
καθώς το 1/0 - αυτό είναι στην ουσία Infinity
(άπειρο):
let num = 1 / 0;
console.log(isFinite(num));
Αποτέλεσμα εκτέλεσης κώδικα:
false
Παράδειγμα
Τώρα η isFinite θα εμφανίσει true,
καθώς η κενή συμβολοσειρά, που δεν είναι αριθμός,
- είναι μια εξαίρεση:
let num = '';
console.log(isFinite(num));
Αποτέλεσμα εκτέλεσης κώδικα:
true