Skip to main content

Primitive Types

Η JavaScript έχει κάποιους προκαθορισμένους τύπους δεδομένων, οι οποίοι ονομάζονται Primitive Data Types. Αυτοί οι τύποι είναι οι εξής:

Number

Ο τύπος Number χρησιμοποιείται για αριθμητικές τιμές. Μπορεί να είναι ακέραιος αριθμός ή δεκαδικός αριθμός. Στην JavaScript δεν υπάρχει διαφορά μεταξύ αυτών των δύο τύπων.

const x = 5;            // Ακέραιος αριθμός
const y = 5.5; // Δεκαδικός αριθμός

console.log(typeof x); // "number"
console.log(typeof y); // Επίσης "number"

Δύο ειδικές τιμές που μπορούν να αντιστοιχιστούν στον τύπο Number είναι το Infinity και το NaN.

Το Infinity χρησιμοποιείται όταν ένας αριθμός υπερβαίνει το μέγιστο επιτρεπτό όριο.

const x = 1 / 0;
console.log(x); // Infinity

const y = -1 / 0;
console.log(y); // -Infinity

console.log(typeof x); // "number"
console.log(typeof y); // Επίσης "number"

Το NaN (Not-a-Number) χρησιμοποιείται όταν μια αριθμητική πράξη δεν μπορεί να εκτελεστεί (Invalid Number). Καλή πρακτική είναι να ελέγχουμε αν μια τιμή είναι NaN πριν την χρησιμοποιήσουμε.

const x = 100 / "Apple";
console.log(x); // NaN

console.log(typeof(x)); // "number"
Προσοχη

Το NaN είναι η μόνη τιμή στην JavaScript που δεν είναι ίση με τον εαυτό της. Αυτό σημαίνει ότι αν χρησιμοποιήσουμε τον τελεστή === για να συγκρίνουμε μια τιμή με το NaN, το αποτέλεσμα θα είναι false. Δηλαδή NaN === NaN επιστρέφει false.

Για να ελέγξουμε αν μια τιμή δεν είναι αριθμός ή δεν μπορεί να μετατραπεί σε αριθμό (περισσότερα στο κεφάλαιο "Αλλαγή Τύπου"), μπορούμε να χρησιμοποιήσουμε την συνάρτηση isNaN().

const x = 100 / "Apple";

isNaN(x); // true

Παρατηρούμε οτι η συνάρτηση isNaN() επιστρέφει false αν η τιμή είναι αριθμός σε μορφή String. Αυτό γίνεται γιατί η συνάρτηση isNaN() προσπαθεί πρώτα να μετατρέψει την τιμή σε αριθμό πριν επιστρέψει κάποιο αποτέλεσμα.

const x = "100";

isNaN(x); // false

Μπορούμε επίσης να χρησιμοποιήσουμε την συνάρτηση Number.isNaN() για να ελέγξουμε αν μια τιμή είναι αμιγώς NaN.

const x = "bar" / "foo";
const y = NaN;

Number.isNaN(x); // true
Number.isNaN(y); // true

String

Ο τύπος String χρησιμοποιείται για αλφαριθμητικές τιμές. Μπορεί να περιέχει οποιοδήποτε κείμενο μέσα σε εισαγωγικά.

const x = "Hello World!";
console.log(typeof x); // "string"

Μπορούμε να χρησιμοποιήσουμε είτε μονά είτε διπλά εισαγωγικά για να δηλώσουμε μια τιμή τύπου String.

const x = 'Hello World!';
const y = "Hello World!";

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

const x = "He said \"Hello\"";
console.log(x); // He said "Hello"

Boolean

Ο τύπος Boolean χρησιμοποιείται για τις τιμές true και false.

const x = true;
const y = false;

console.log(typeof x); // "boolean"
console.log(typeof y); // Επίσης "boolean"

undefined

Η τιμή undefined χρησιμοποιείται όταν μια μεταβλητή δεν έχει αρχικοποιηθεί.

var x;
console.log(x); // undefined
console.log(typeof x); // "undefined"

const y = undefined;
console.log(y); // undefined

const arr = [1, 2, 3];
console.log(arr[3]); // undefined

function foo() {
return;
}

console.log(foo()); // undefined

null

Η τιμή null χρησιμοποιείται όταν θέλουμε να δηλώσουμε ότι μια μεταβλητή δεν περιέχει τίποτα ή αναπαριστά μια άγνωστη τιμή.

const x = null;
console.log(x); // null
console.log(typeof x); // "object" (???)
Προσοχη

Η τιμή null επιστρέφει "object" όταν χρησιμοποιήσουμε τον operator typeof. Αυτό είναι ένα bug στην JavaScript που υπάρχει απο τις πρώτες κιόλας εκδόσεις της. Αυτό το bug διατηρείται μέχρι και σημερα για λόγους συμβατότητας με παλαιότερες εκδόσεις της γλώσσας.

BigInt

Ο τύπος BigInt χρησιμοποιείται για ακέραιους αριθμούς με μεγάλη ακρίβεια. Μπορούμε να δηλώσουμε μια τιμή τέτοιου τύπου προσθέτοντας τον χαρακτήρα n στο τέλος της τιμής.

const x = 237n;
console.log(x); // 237n
console.log(typeof x); // "bigint"

Symbol

Ο τύπος Symbol χρησιμοποιείται για τη δημιουργία μοναδικών τιμών. Ένα Symbol δεν μπορεί να συγκριθεί με άλλες τιμές.

const x = Symbol("Hello");
console.log(x); // Symbol(Hello)
console.log(typeof x); // "symbol"

const y = Symbol("Hello");
console.log(x === y); // false

const z = Symbol("World");
console.log(x === z); // false