livescript — συγκεντρωτικός οδηγός — DedSec Project
livescript — συγκεντρωτικός οδηγός LiveScript Τι προσφέρει η γλώσσα Η LiveScript μεταγλωττίζεται σε JavaScript και έχει σύντομη λειτουργική σύνταξη. Η συμπεριφορά εξαρτάται από το…
LiveScript
Τι προσφέρει η γλώσσα
Η LiveScript μεταγλωττίζεται σε JavaScript και έχει σύντομη λειτουργική σύνταξη. Η συμπεριφορά εξαρτάται από το JavaScript που παράγεται.
Μικρό παράδειγμα προς μελέτη
square = (x) -> x * x
console.log square 5
Μεταγλώττισε το παράδειγμα, διάβασε το παραγόμενο JavaScript και δοκίμασε δεύτερη τιμή. Κατάγραψε πώς γίνεται το function declaration.
Τι να επαληθεύσεις
Κατάγραψε την πραγματική έκδοση εργαλείου, τις απαιτούμενες εξαρτήσεις και την έξοδο σε δοκιμαστικά δεδομένα για τη LiveScript. Πρόβλεψε το αποτέλεσμα πριν το ελέγξεις και διατήρησε την αρχική και τη διορθωμένη εκδοχή ώστε να φαίνεται η αιτιώδης διαφορά. Μην αποκαλείς ένα απόσπασμα εκτελεσμένο αν δεν έχεις το κατάλληλο περιβάλλον.
Παγίδα ειδική για το θέμα
Η σύνταξη LiveScript δεν εκτελείται ως κανονικό JavaScript· απαιτείται μεταγλώττιση πριν από browser console.
Εργαστήριο εξάσκησης: LiveScript
Η LiveScript μεταγλωττίζεται σε JavaScript. Τα βέλη συναρτήσεων και η σύνταξη κλήσης ανήκουν στη LiveScript, ενώ η εκτέλεση του παραγόμενου κώδικα πραγματοποιείται σε διαφορετικό περιβάλλον όπως Node.js ή browser. Γι' αυτό ο μεταγλωττιστής και το runtime δίνουν διαφορετικές κατηγορίες σφαλμάτων.
Άσκηση 1: πρόβλεψη μαθηματικού αποτελέσματος
square = (n) -> n * n
console.log square 4
Η αναμενόμενη έξοδος για το αριθμητικό 4 είναι 16. Αν η είσοδος γίνει -4, το αποτέλεσμα παραμένει 16. Δημιούργησε θεωρητικά μια cube = (n) -> n * n * n και εξήγησε γιατί για -4 αναμένεις -64. Η square υπολογίζει αποτέλεσμα χωρίς εξωτερική μεταβολή, ενώ το console.log είναι η παρενέργεια που εμφανίζει το αποτέλεσμα. Διαχώρισε αυτές τις δύο ευθύνες.
Άσκηση 2: διαφορετικοί τύποι στη JavaScript
Τι γίνεται αν ο καλών περάσει το κείμενο "4" αντί του αριθμού 4; Στη JavaScript ο πολλαπλασιασμός μπορεί να μετατρέψει αριθμητικό κείμενο και να παράγει 16, αλλά αυτό δεν αποτελεί ασφαλή πολιτική αποδοχής δεδομένων. Αν δοθεί "apple", το αποτέλεσμα του πολλαπλασιασμού δεν είναι έγκυρος αριθμός (NaN). Σχεδίασε ρητό έλεγχο τύπου και όρισε αν θα επιτρέπεται κάποια μετατροπή. Μην συγχέεις τη δυνατότητα μετατροπής με την ορθότητα μιας επιχειρησιακής εισόδου.
Άσκηση 3: αναγνώριση σταδίου αποτυχίας
Λανθασμένη εσοχή ή κακή σύνταξη βέλους μπορεί να απορριφθεί κατά τη μεταγλώττιση LiveScript. Ένα TypeError από τον παραγόμενο κώδικα εμφανίζεται κατά την εκτέλεση JavaScript. Περιέγραψε πώς θα κρατήσεις το αρχικό αρχείο, το παραγόμενο JS και το stack trace ώστε να μην διορθώνεις τυχαία το λάθος επίπεδο. Μην ισχυρίζεσαι ότι υπάρχει συγκεκριμένη αντιστοίχιση source map αν δεν τη δοκίμασες στο toolchain.
Κριτήριο προόδου
Σημείωσε έκδοση LiveScript, runtime JS, αναμενόμενα αποτελέσματα και πραγματικές παρατηρήσεις. Σε browser το console.log δεν αλλάζει από μόνο του το DOM. Αν δεν υπάρχει compiler, δήλωσε ότι πρόκειται για στατική μελέτη και όχι επιτυχημένη εκτέλεση.