Τελεστές (Operators)
Οι τελεστές είναι σύμβολα τα οποία εκφράζουν κάποια συγκεκριμένη λειτουργία (πράξη) σε ένα ή περισσότερα αντικείμενα. Για παράδειγμα, ο τελεστής +
χρησιμοποιείται για την πρόσθεση δύο αριθμών.
Ανάλογα με τα αντικείμενα στα οποία χρησιμοποιούνται οι τελεστές, χωρίζονται σε κατηγορίες. Έτσι έχουμε.
Αριθμητικοί τελεστές
Πρόσθεση (+)
Προσθέτει δύο αριθμούς. Ο τελεστής της πρόσθεσης χρησιμοποιείται και για την πρόσθεση δύο κειμένων. Όταν ένα μέλος της πρόσθεσης είναι αριθμός και το άλλο κείμενο τότε ο αριθμός θεωρείται σαν κείμενο. Όταν ένας αριθμός είναι σε εισαγωγικά τότε αυτός θεωρείται σαν κείμενο.
Δείτε τα πιο κάτω παραδείγματα με τα αντίστοιχα αποτελέσματα:
5 + 3 => 8 "5" + "3" => 53 (και όχι 8) "Γειά σου " + "Κώστα" => Γειά σου Κώστα "Γειά σου " + 8 => Γειά σου 8 "45" + 8 => 458 (και όχι 53) 3 + 3 + "3" => 63 (και όχι 9)
Αφαίρεση (-)
Αφαιρεί δύο αριθμούς. Ο τελεστής της αφαίρεσης χρησιμοποιείται αποκλειστικά για αριθμητικές πράξεις. Εάν ένας αριθμός είναι σε εισαγωγικά τότε η αφαίρεση είναι δυνατή.
Δείτε τα πιο κάτω παραδείγματα με τα αντίστοιχα αποτελέσματα:
18-5 => 13 "25" - 5 => 20 (Η αφαίρεση γίνεται κανονικά) "25" - "5" => 20 (Η αφαίρεση γίνεται κανονικά)
Πολλαπλασιασμός (*)
Πολλαπλασιάζει δύο αριθμούς. Χρησιμοποιείται αποκλειστικά με αριθμούς.
10*4 => 40
Διαίρεση (/)
Διαιρεί δύο αριθμούς. Το αποτέλεσμα μπορεί να είναι ακέραιος ή δεκαδικός.
Modulo (%)
Διαιρεί δύο αριθμούς και δίνει σαν αποτέλεσμα το υπόλοιπο της διαίρεσης. Παράδειγμα:
10%3 => 1
Μείον(-)
Μετατρέπει έναν θετικό αριθμό σε αρνητικό ή έναν αρνητικό σε θετικό.
Αύξηση (++)
Αυξάνει μια αριθμητική τιμή κατά μία μονάδα. Ο τελεστής αυτός μπορεί να προηγηθεί κάποιου αριθμού ή να ακολουθήσει κάποιον αριθμό. Το αποτέλεσμα είναι διαφορετικό σε κάθε περίπτωση. Όταν προηγείται του αριθμού, τότε αυξάνει την τιμή κατά ένα και δίνει το αποτέλεσμα. Όταν ακολουθεί τον αριθμό τότε δίνει πρώτα την τιμή που έχει και στη συνέχεια αυξάνει κατά ένα.
var x = 10; document.write(++x); //το αποτέλεσμα είναι 11 var x = 10; document.write(x++); //το αποτέλεσμα είναι 10, η τιμή του x όμως έχει γίνει 11
Μείωση (--)
Λειτουργεί όπως και ο τελεστής ++
με τη μόνη διαφορά η τιμή μειώνεται κατά ένα.
var x = 10; document.write(--x); //το αποτέλεσμα είναι 9 var x = 10; document.write(x--); //το αποτέλεσμα είναι 10, η τιμή του x όμως έχει γίνει 9
Συγκριτικοί τελεστές
Οι τελεστές αυτοί χρησιμοποιούνται για την σύγκριση δύο τιμών. Συνδυάζονται συνήθως με την πρόταση if
. Όταν η σύγκριση είναι αληθής τότε επιστρέφεται η τιμή true
, διαφορετικά επιστρέφεται η τιμή false
(ψευδής).
Μεγαλύτερο του (>)
Συγκρίνει αν μια τιμή είναι μεγαλύτερη μίας άλλης. Παράδειγμα: if(15>3)
.
Μικρότερο του (<)
Συγκρίνει αν μια τιμή είναι μικρότερη μίας άλλης. Παράδειγμα: if(10<20)
.
Μεγαλύτερο ή ίσο του (>=)
Συγκρίνει αν μια τιμή είναι μεγαλύτερη ή ίση μίας άλλης. Παράδειγμα: if(15>=3)
.
Μικρότερο ή ίσο του (<=)
Συγκρίνει αν μια τιμή είναι μικρότερη ή ίση μίας άλλης. Παράδειγμα: if(10<=20)
.
Ίσον του(==)
Συγκρίνει αν μια τιμή είναι ίση μίας άλλης. Παράδειγμα: if(10==10)
.
Ίσον του(===)
Συγκρίνει αν μια τιμή είναι ίση μίας άλλης αλλά επιπλέον συγκρίνει και τον τύπο. Παράδειγμα: το if(10===10)
επιστρέφει true ενώ το if(10==='10')
επιστρέφει false διότι έχουμε έναν τύπο Numeric
και έναν τύπο String
.
Όχι ίσον του(!=)
Συγκρίνει αν μια τιμή δεν είναι ίση μίας άλλης. Παράδειγμα: if(10!=33)
.
Λογικοί τελεστές
Οι λογικοί τελεστές χρησιμοποιούνται για τη σύγκριση δύο λογικών προτάσεων. Το αποτέλεσμα μπορεί να είναι true
ή false
.
Λογικό ΚΑΙ (&&)
Όταν και οι δύο προτάσεις είναι true
το αποτέλεσμα είναι true
, διαφορετικά το αποτέλεσμα είναι false
. Παράδειγμα: if(x>0 && x<10)
Λογικό Ή (||)
Όταν τουλάχιστον μία από τις δύο προτάσεις είναι true
το αποτέλεσμα είναι true
, διαφορετικά το αποτέλεσμα είναι false
.
Παράδειγμα: if(x==0 || x==2)
Λογικό ΌΧΙ (!)
Εφαρμόζεται σε μία πρόταση και αλλάζει τη λογική τιμή της. Όταν η πρόταση είναι true
γίνεται false
και όταν είναι false
γίνεται true
. Παράδειγμα: if(!(x==0))
Τελεστές bitwise
Εκτελούν λογικές πράξεις σε δυαδικούς αριθμούς.
bitwise AND (&)
Επιστρέφει 1 όταν και οι δύο τιμές (bits) είναι 1, σε άλλη περίπτωση επιστρέφει 0
0101 & 1100 = 0100
bitwise OR (|)
Επιστρέφει 0 όταν και οι δύο τιμές (bits) είναι 0, σε άλλη περίπτωση επιστρέφει 1
0101 | 1100 = 1101
bitwise XOR (^)
Επιστρέφει 1 όταν οι δύο τιμές (bits) είναι διαφορετικές, σε άλλη περίπτωση επιστρέφει 0
0101 ^ 1100 = 1001
bitwise NOT (~)
Αλλάζει τα bits από 0 σε 1 και από 1 σε 0
~0101 = 1010
Εκχώρηση τιμών με bitwise
Δείτε τα παρακάτω παραδείγματα.
let a = 5; // 0101 a &= 3; // a = 0101 & 0011 console.log(a); // 0001
let a = 5; // 0101 a |= 3; // a = 0101 | 0011 console.log(a); // 0111
let a = 5; // 0101 a ^= 3; // a = 0101 ^ 0011 console.log(a); // 0110
Ο τελεστής spread (...) ή η σύνταξη spread
Σε γενικές γραμμές με τον τελεστή spread(...) διασπάμε έναν πίνακα (ή αντικείμενο) στα στοιχεία του ή και το αντίστροφο.
Χρησιμοποιείται κυρίως σε παραμετροποιημένες συναρτήσεις (functions), πίνακες (arrays) και αντικείμενα (objects).
Παραδείγματα με πίνακες
Αντιγραφή πίνακα. i
let col = [10, 20, 30]; let [a, b, c] = [...col]; console.log(a, b, c); // 10, 20, 30
Αντιγραφή πίνακα. ii
const array = [1, 2, 3]; const new_array = [...array]; console.log(new_array); // [1, 2, 3]
Καταχώρηση τιμών σε πίνακα.
let array = []; [...array] = [1, 2, 3]; console.log(array); // [1, 2, 3]
Ή πιο σύντομα:
let [...array] = [1, 2, 3]; console.log(array); // [1, 2, 3]
Επέκταση πίνακα.
let nums = [10, 20, 30] nums = [...nums, ...[40, 50]]; console.log(nums); // [10, 20, 30, 40, 50]
Ή
let nums = [10, 20, 30] nums = [...[40, 50], ...nums]; console.log(nums); // [40, 50, 10, 20, 30]
Ή
let nums = [10, 20, 30] nums = [40, 50, ...nums]; console.log(nums); // [40, 50, 10, 20, 30]
Ή
const somefruits = ["apples", "bananas"]; const allfruits = ["oranges", ...somefruits, "pears", "melons"]; console.log(allfruits); // ['oranges', 'apples', 'bananas', 'pears', 'melons']
Συνένωση πινάκων.
let arr1 = [0, 1, 2]; const arr2 = [3, 4, 5]; //συνένωση let arr3 = [...arr1, ...arr2]; //[0, 1, 2, 3, 4, 5]
ή
let arr1 = [0, 1, 2]; const arr2 = [3, 4, 5]; let arr3 = [...arr2, ...arr1]; //[3, 4, 5, 0, 1, 2]
ή
let arr1 = [0, 1, 2]; let arr2 = [...arr1, 3, 4, 5]; //[0, 1, 2, 3, 4, 5]
ή
let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5, ...arr1]; //[3, 4, 5, 0, 1, 2]
Παραδείγματα με αντικείμενα
Αντιγραφή αντικειμένων.
const obj1 = {x: "a", y: "b"}; const obj2 = { ...obj1 }; console.log(obj2); // {x: "a", y: "b"}
Καταχώρηση τιμών σε αντικείμενο.
let {...object } = { x: 1, y: 2, z: 3 }; console.log(object); // {x: 1, y: 2, z: 3}
Επέκταση αντικειμένου.
let obj1 = {x: 1, y: 2}; let obj2 = {z: 3, w: 4}; obj1 = { ...obj1, ...obj2 }; console.log(obj1); // {x: 1, y: 2, z: 3, w: 4}
ή
let obj = {x: 1, y: 2}; obj = { ...obj, ...{z: 3, w: 4} }; console.log(obj); // {x: 1, y: 2, z: 3, w: 4}
Συνένωση αντικειμένων.
const obj1 = {x: 1, y: 2}; const obj2 = {z: 3, w: 4}; const obj3 = { ...obj1, ...obj2 }; console.log(obj3); // {x: 1, y: 2, z: 3, w: 4}
Συνένωση αντικειμένων με αντικατάσταση.
const obj1 = {x: 1, y: 2}; const obj2 = {y: 3, w: 4}; //συνένωση const obj3 = { ...obj1, ...obj2 }; // {x: 1, y: 3, w: 4}
Αντικατάσταση και επέκταση σε αντικείμενο
let object1 = {x: 1, y: 2, z: 3}; let object2 = {...object1, z: 13, w: 4} console.log(object2); //{x: 1, y: 2, z: 13, w: 4}
Αντικατάσταση τιμών αντικειμένου.
let obj1 = {x: 1, y: 2}; let obj2 = {x: 3, y: 4}; obj1 = { ...obj1, ...obj2 }; console.log(obj1); // {x: 3, y: 4}
Αντικατάσταση τιμών αντικειμένου (η σειρά δεν έχει σημασία).
let obj1 = {x: 1, y: 2}; let obj2 = {y: 3, x: 4}; obj1 = { ...obj1, ...obj2 }; console.log(obj1); // {x: 4, y: 3}
ή
let obj1 = {x: 1, y: 2}; obj1 = { ...obj1, ...{y: 3, x: 4}}; console.log(obj1); // {x: 4, y: 3}
ή
let obj1 = {x: 1, y: 2}; obj1 = { ...obj1, ...{x: 4}}; console.log(obj1); // {x: 4, y: 2}
Αντιστοίχιση τιμών πίνακα σε αντικείμενο (json). Ή μετατροπή array σε json.
const array = [1, 2, 3]; const obj = {...array}; console.log(obj); // {0: 1, 1: 2, 2: 3}
Παραδείγματα με συναρτήσεις
Αντιστοίχιση στοιχείων πίνακα στις παραμέτρους συνάρτησης.
function sum(x, y, z) { return x + y + z; } const numbers = [1, 2, 3]; console.log(sum(...numbers)); // Expected output: 6
ή
function sum(x, y, z) { return x + y + z; } let total = sum(...[1, 2, 3]); console.log(total); // 6
ή
function sum(start, x, y, z) { return start + x + y + z; } let total = sum(100, ...[1, 2, 3]); console.log(total); // 106