Η JavaScript είναι μια δυναμική γλώσσα βασισμένη σε πρωτότυπα. Έχει μερικές πρωτογενείς τιμές, και όλα τα υπόλοιπα θεωρούνται αντικείμενα.
Αν και είναι περισσότερο γνωστή ως η γλώσσα σεναρίων για ιστοσελίδες, πολλά περιβάλλοντα εκτός προγράμματος περιήγησης τη χρησιμοποιούν επίσης, όπως το Node.js. Η γλώσσα αναπτύσσεται ενεργά, και λόγω του πολυπαραδειγματικού της χαρακτήρα επιτρέπει πολλά στυλ προγραμματισμού. Η JavaScript είναι μια δυναμική γλώσσα, που υποστηρίζει αντικειμενοστρεφές, προστακτικό και δηλωτικό (π.χ. συναρτησιακό προγραμματισμό) στυλ.
Υπάρχουν μερικοί βασικοί τρόποι να αναθέσεις τιμές σε ονόματα στη JavaScript: με μεταβλητές ή σταθερές. Στο Exercism, οι μεταβλητές γράφονται πάντα σε camelCase, ενώ οι σταθερές σε SCREAMING_SNAKE_CASE. Δεν υπάρχει επίσημος οδηγός να ακολουθήσεις, και διάφορες εταιρείες και οργανισμοί έχουν διαφορετικούς οδηγούς στυλ. Μη διστάσεις να γράψεις τις μεταβλητές όπως θέλεις. Το πλεονέκτημα του να τις γράφεις με τον τρόπο που είναι προετοιμασμένες οι ασκήσεις είναι ότι θα επισημαίνονται διαφορετικά στη διαδικτυακή διεπαφή και στα περισσότερα IDE.
Οι μεταβλητές στη JavaScript μπορούν να οριστούν χρησιμοποιώντας τη λέξη-κλειδί const, let (έστω) ή var.
Μια μεταβλητή μπορεί να αναφέρεται σε διαφορετικές τιμές κατά τη διάρκεια της ζωής της όταν χρησιμοποιείς let ή var. Για παράδειγμα, η myFirstVariable μπορεί να οριστεί και να επαναοριστεί πολλές φορές χρησιμοποιώντας τον τελεστή ανάθεσης =:
let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();
Σε αντίθεση με το let και το var, οι μεταβλητές που ορίζονται με const μπορούν να ανατεθούν μόνο μία φορά. Αυτό χρησιμοποιείται για τον ορισμό σταθερών στη JavaScript.
const MY_FIRST_CONSTANT = 10;
// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
Η λέξη-κλειδί const αναφέρεται τόσο για μεταβλητές όσο και για σταθερές. Μια άλλη έννοια που αναφέρεται συχνά σε σχέση με τις σταθερές είναι η (μη) μεταβλητότητα.
Η λέξη-κλειδί const κάνει αμετάβλητη μόνο τη δέσμευση, δηλαδή μπορείς να αναθέσεις μια τιμή σε μια μεταβλητή const μόνο μία φορά. Στη JavaScript, μόνο οι πρωτογενείς τιμές είναι αμετάβλητες. Ωστόσο, οι μη πρωτογενείς τιμές μπορούν ακόμα να μεταβληθούν.
const MY_MUTABLE_VALUE_CONSTANT = { food: 'apple' };
// This is possible
MY_MUTABLE_VALUE_CONSTANT.food = 'pear';
MY_MUTABLE_VALUE_CONSTANT;
// => { food: "pear" }
Κατά κανόνα, στο Exercism, και σε πολλούς άλλους οργανισμούς και οδηγούς στυλ έργων, μη μεταβάλλεις τιμές που μοιάζουν με const SCREAMING_SNAKE_CASE. Τεχνικά οι τιμές μπορούν να αλλάξουν, αλλά για λόγους σαφήνειας και διαχείρισης των προσδοκιών στο Exercism αυτό αποθαρρύνεται. Όταν αυτό πρέπει να επιβληθεί, χρησιμοποίησε το Object.freeze(value).
const MY_VALUE_CONSTANT = Object.freeze({ food: 'apple' });
// This silently fails
MY_VALUE_CONSTANT.food = 'pear';
MY_VALUE_CONSTANT;
// => { food: "apple" }
Στην πράξη, είναι απίθανο να δεις το Object.freeze παντού σε μια βάση κώδικα, αλλά ο κανόνας να μη μεταβάλλεις ποτέ μια τιμή SCREAMING_SNAKE_CASE είναι καλός κανόνας, που συχνά επιβάλλεται με αυτοματοποιημένη ανάλυση, όπως ένα linter.
Στη JavaScript, οι μονάδες λειτουργικότητας ενσωματώνονται σε συναρτήσεις, που συνήθως ομαδοποιούνται στο ίδιο αρχείο αν ανήκουν μαζί. Αυτές οι συναρτήσεις μπορούν να δεχτούν παραμέτρους (ορίσματα) και μπορούν να επιστρέψουν μια τιμή χρησιμοποιώντας τη λέξη-κλειδί return. Οι συναρτήσεις καλούνται με τη σύνταξη ().
function add(num1, num2) {
return num1 + num2;
}
add(1, 3);
// => 4
💡 Στη JavaScript υπάρχουν πολλοί διαφορετικοί τρόποι να δηλώσεις μια συνάρτηση. Αυτοί οι άλλοι τρόποι φαίνονται διαφορετικοί από τη χρήση της λέξης-κλειδιού
function. Η διαδρομή προσπαθεί να τους παρουσιάσει σταδιακά, αλλά αν τους ξέρεις ήδη, μη διστάσεις να χρησιμοποιήσεις οποιονδήποτε από αυτούς. Στις περισσότερες περιπτώσεις, η χρήση του ενός ή του άλλου δεν είναι καλύτερη ούτε χειρότερη.
Οι λέξεις-κλειδιά export και import είναι ισχυρά εργαλεία που μετατρέπουν ένα συνηθισμένο αρχείο JavaScript σε άρθρωμα JavaScript. Εκτός από το να επιτρέπουν στον κώδικα να εκθέτει επιλεκτικά components, όπως συναρτήσεις, κλάσεις, μεταβλητές και σταθερές, ενεργοποιούν επίσης μια ολόκληρη σειρά άλλων δυνατοτήτων, όπως:
Ένα συγκεκριμένο παράδειγμα είναι το πώς λειτουργούν τα tests στη διαδρομή JavaScript του Exercism. Κάθε άσκηση έχει τουλάχιστον ένα αρχείο υλοποίησης, για παράδειγμα το lasagna.js, και κάθε άσκηση έχει τουλάχιστον ένα αρχείο test, για παράδειγμα το lasagna.spec.js. Το αρχείο υλοποίησης χρησιμοποιεί το export για να εκθέσει το δημόσιο API, και το αρχείο test χρησιμοποιεί το import για να αποκτήσει πρόσβαση σε αυτά, κι έτσι μπορεί να ελέγξει τα αποτελέσματα της υλοποίησης.
// file.js
export const MY_VALUE = 10;
export function add(num1, num2) {
return num1 + num2;
}
// file.spec.js
import { MY_VALUE, add } from './file';
add(MY_VALUE, 5);
// => 15