Facebook Pixel
Searching...
Ελληνικά
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
JavaScript

JavaScript

The Good Parts
by Douglas Crockford 2008 153 pages
4.23
8k+ ratings
Listen
Listen

Key Takeaways

1. Τα Καλά Μέρη του JavaScript: Αγκαλιάστε την Απλότητα και τη Δύναμη

Το JavaScript περιέχει ένα μεγάλο σύνολο αδύναμων ή προβληματικών χαρακτηριστικών που μπορούν να υπονομεύσουν τις προσπάθειές μας να γράψουμε καλά προγράμματα. Προφανώς, θα πρέπει να αποφεύγουμε τα χειρότερα χαρακτηριστικά του JavaScript.

Αγκαλιάστε το καλό, αποφύγετε το κακό. Το JavaScript, παρά τα ελαττώματά του, έχει έναν όμορφο και ισχυρό πυρήνα. Εστιάζοντας στα καλά του μέρη, οι προγραμματιστές μπορούν να δημιουργήσουν ανθεκτικό, αποδοτικό και συντηρήσιμο κώδικα. Η ευελιξία της γλώσσας επιτρέπει εκφραστικό και συνοπτικό προγραμματισμό, αλλά απαιτεί επίσης πειθαρχία για να αποφευχθούν οι παγίδες της.

Κύρια καλά μέρη περιλαμβάνουν:

  • Συναρτήσεις ως πρώτης τάξης αντικείμενα
  • Χαλαρός τύπος
  • Δυναμικά αντικείμενα
  • Εκφραστική σημειογραφία αντικειμένων

Αποφύγετε προβληματικά χαρακτηριστικά όπως:

  • Παγκόσμιες μεταβλητές
  • Έμμεση μετατροπή τύπων
  • Η δήλωση with
  • Η συνάρτηση eval

Επιλέγοντας προσεκτικά ποια χαρακτηριστικά θα χρησιμοποιήσουν, οι προγραμματιστές μπορούν να εκμεταλλευτούν τη δύναμη του JavaScript ενώ ελαχιστοποιούν τους κινδύνους και την πολυπλοκότητα.

2. Συναρτήσεις ως Πρώτης Τάξης Αντικείμενα: Η Καρδιά του JavaScript

Οι συναρτήσεις του JavaScript είναι πρώτης τάξης αντικείμενα με (κυρίως) λεξιλογική σάρωση. Το JavaScript είναι η πρώτη γλώσσα lambda που έγινε mainstream.

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

Κύρια χαρακτηριστικά των συναρτήσεων του JavaScript:

  • Λεξιλογική σάρωση (κλεισίματα)
  • Μπορούν να χρησιμοποιηθούν για τη δημιουργία μονάδων
  • Υποστήριξη για πρότυπα λειτουργικού προγραμματισμού
  • Δυνατότητα δημιουργίας μεθόδων για αντικείμενα

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

3. Αντικείμενα και Πρωτότυπα: Ευέλικτη και Αποτελεσματική Κληρονομιά

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

Η πρωτοτυπική κληρονομιά είναι μοναδική και ισχυρή. Το σύστημα αντικειμένων του JavaScript είναι θεμελιωδώς διαφορετικό από τις γλώσσες που βασίζονται σε κλάσεις. Αντί για κλάσεις, χρησιμοποιεί πρωτότυπα για την κληρονομιά. Αυτό επιτρέπει πιο ευέλικτες και δυναμικές σχέσεις αντικειμένων.

Κύρια χαρακτηριστικά του συστήματος αντικειμένων του JavaScript:

  • Τα αντικείμενα μπορούν να κληρονομήσουν απευθείας από άλλα αντικείμενα
  • Δυναμική προσθήκη ιδιοτήτων και μεθόδων
  • Δεν απαιτούνται ορισμοί κλάσεων
  • Αποτελεσματική χρήση μνήμης μέσω της αλυσίδας πρωτοτύπων

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

4. Αποφύγετε τις Παγκόσμιες Μεταβλητές: Ενισχύστε την Ποιότητα και την Ασφάλεια του Κώδικα

Το χειρότερο από όλα τα κακά χαρακτηριστικά του JavaScript είναι η εξάρτησή του από τις παγκόσμιες μεταβλητές.

Οι παγκόσμιες μεταβλητές είναι μια μεγάλη παγίδα. Η χρήση παγκόσμιων μεταβλητών στο JavaScript μπορεί να οδηγήσει σε πολυάριθμα προβλήματα, συμπεριλαμβανομένων συγκρούσεων ονομάτων, ευπαθειών ασφαλείας και δυσκολιών στη συντήρηση και την αποσφαλμάτωση του κώδικα. Καθιστούν δύσκολη τη δημιουργία αρθρωτού και επαναχρησιμοποιήσιμου κώδικα.

Στρατηγικές για τη μείωση των παγκόσμιων μεταβλητών:

  • Χρησιμοποιήστε το πρότυπο μονάδας
  • Χρησιμοποιήστε κλεισίματα για τη δημιουργία ιδιωτικών πεδίων
  • Χρησιμοποιήστε IIFE (Άμεσα Καλούμενες Λειτουργικές Εκφράσεις)
  • Ονομάστε την εφαρμογή σας κάτω από ένα μόνο παγκόσμιο αντικείμενο

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

5. Κατανοήστε και Εκμεταλλευτείτε τα Κλεισίματα για Ισχυρό Προγραμματισμό

Οι συναρτήσεις στο JavaScript σχηματίζουν κλεισίματα. Ένα κλείσιμο είναι η εσωτερική συνάρτηση συν η πρόσβαση σε όλες τις μεταβλητές στους εξωτερικούς τομείς.

Τα κλεισίματα επιτρέπουν ισχυρούς παραδείσους. Το κλείσιμο είναι μια θεμελιώδης έννοια στο JavaScript που επιτρέπει στις συναρτήσεις να διατηρούν πρόσβαση σε μεταβλητές από τον εξωτερικό τους τομέα ακόμη και μετά την επιστροφή της εξωτερικής συνάρτησης. Αυτό επιτρέπει ισχυρούς παραδείσους προγραμματισμού και είναι κλειδί για πολλά σχέδια JavaScript.

Εφαρμογές των κλεισίματος:

  • Δημιουργία ιδιωτικών μεταβλητών και μεθόδων
  • Υλοποίηση του προτύπου μονάδας
  • Διαχείριση callbacks και ασύγχρονου κώδικα
  • Δημιουργία εργοστασίων συναρτήσεων

Η κατανόηση και η εκμετάλλευση των κλεισίματος επιτρέπει στους προγραμματιστές να γράφουν πιο αποδοτικό, ασφαλή και αρθρωτό κώδικα. Είναι μια βασική έννοια για τον προχωρημένο προγραμματισμό JavaScript και είναι απαραίτητη για τη δημιουργία σύνθετων εφαρμογών.

6. Αγκαλιάστε το JSON για Ανταλλαγή Δεδομένων και Φορητότητα

Το JSON είναι μια ελαφριά μορφή ανταλλαγής δεδομένων. Βασίζεται στη σημειογραφία αντικειμένων του JavaScript, ένα από τα καλύτερα μέρη του JavaScript.

Το JSON απλοποιεί την ανταλλαγή δεδομένων. Το JSON (JavaScript Object Notation) έχει γίνει πρότυπο για την ανταλλαγή δεδομένων λόγω της απλότητάς του, της αναγνωσιμότητάς του και της ευκολίας χρήσης του. Είναι ανεξάρτητο από γλώσσες αλλά είναι ιδιαίτερα κατάλληλο για εφαρμογές JavaScript.

Κύρια οφέλη του JSON:

  • Ελαφρύ και εύκολο στην ανάγνωση/γραφή
  • Ανεξάρτητο από γλώσσες
  • Εύκολο στην ανάλυση και παραγωγή
  • Υποστηρίζει σύνθετες δομές δεδομένων

Χρησιμοποιώντας το JSON για την ανταλλαγή δεδομένων, οι προγραμματιστές μπορούν να απλοποιήσουν την επικοινωνία μεταξύ διαφορετικών τμημάτων μιας εφαρμογής ή μεταξύ διαφορετικών συστημάτων. Είναι ιδιαίτερα χρήσιμο σε διαδικτυακές εφαρμογές για την επικοινωνία πελάτη-διακομιστή και για την αποθήκευση δεδομένων ρυθμίσεων.

7. Χρησιμοποιήστε το JSLint για να Επιβάλετε Καλές Πρακτικές και να Εντοπίσετε Σφάλματα

Το JSLint είναι ένας ελεγκτής και επαληθευτής σύνταξης JavaScript. Παίρνει ένα κείμενο πηγής και το σκανάρει. Εάν βρει ένα πρόβλημα, επιστρέφει ένα μήνυμα που περιγράφει το πρόβλημα και μια περίπου τοποθεσία εντός της πηγής.

Το JSLint βελτιώνει την ποιότητα του κώδικα. Η χρήση εργαλείων όπως το JSLint μπορεί να βελτιώσει σημαντικά την ποιότητα και τη συνέπεια του κώδικα JavaScript. Βοηθά στην επιβολή καλών πρακτικών, στην έγκαιρη ανίχνευση πιθανών σφαλμάτων και στη διατήρηση υψηλών προτύπων κώδικα σε ένα έργο ή ομάδα.

Οφέλη από τη χρήση του JSLint:

  • Εντοπίζει κοινά σφάλματα προγραμματισμού
  • Επιβάλλει πρότυπα κωδικοποίησης
  • Βελτιώνει την αναγνωσιμότητα και τη συντηρησιμότητα του κώδικα
  • Βοηθά στην εκμάθηση και την υιοθέτηση καλών πρακτικών

Ενσωματώνοντας το JSLint στη διαδικασία ανάπτυξης, οι ομάδες μπορούν να εντοπίζουν και να διορθώνουν ζητήματα νωρίς, οδηγώντας σε πιο ανθεκτικό και συντηρήσιμο κώδικα. Είναι ιδιαίτερα πολύτιμο για μεγάλα έργα ή ομάδες όπου η συνέπεια είναι κρίσιμη.

8. Προσέξτε τα Κακά Μέρη του JavaScript: Πλοηγηθείτε στις Παγίδες με Σοφία

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

Αποφύγετε τα προβληματικά χαρακτηριστικά. Ενώ το JavaScript έχει πολλά ισχυρά χαρακτηριστικά, περιλαμβάνει επίσης αρκετά προβληματικά που μπορούν να οδηγήσουν σε σφάλματα, ζητήματα ασφαλείας ή δύσκολα συντηρήσιμο κώδικα. Η γνώση και η αποφυγή αυτών των "κακών μερών" είναι κρίσιμη για τη συγγραφή ανθεκτικών εφαρμογών JavaScript.

Κύρια κακά μέρη που πρέπει να αποφευχθούν:

  • Η δήλωση with
  • Η συνάρτηση eval
  • Αυτόματη εισαγωγή ερωτηματικών
  • Ασυνέπειες του τελεστή typeof
  • Οι τελεστές == και != (χρησιμοποιήστε τους === και !== αντίστοιχα)

Γνωρίζοντας αυτές τις παγίδες και αποφεύγοντάς τες συνειδητά, οι προγραμματιστές μπορούν να γράφουν πιο καθαρό, αξιόπιστο και συντηρήσιμο κώδικα JavaScript. Συχνά είναι καλύτερο να χρησιμοποιείτε καλά κατανοητές εναλλακτικές ή λύσεις για αυτά τα προβληματικά χαρακτηριστικά.

Last updated:

FAQ

What's "JavaScript: The Good Parts" about?

  • Focus on JavaScript's strengths: The book highlights the most effective and efficient parts of JavaScript, aiming to help programmers use the language to its fullest potential.
  • Target audience: It is intended for programmers who are either new to JavaScript or have been using it at a novice level and are ready to deepen their understanding.
  • Not a beginner's guide: The book is not a comprehensive reference or a beginner's guide; it focuses on the essential parts of JavaScript that are most beneficial.
  • Exclusion of bad parts: It deliberately excludes the problematic features of JavaScript to promote better programming practices.

Why should I read "JavaScript: The Good Parts"?

  • Improve JavaScript skills: It helps programmers refine their skills by focusing on the most powerful and reliable features of JavaScript.
  • Avoid common pitfalls: By highlighting the good parts, the book helps readers avoid the language's quirks and pitfalls.
  • Enhance code quality: The book encourages writing cleaner, more maintainable, and more efficient code.
  • Gain deeper insights: It provides insights into JavaScript's design and how to leverage its strengths effectively.

What are the key takeaways of "JavaScript: The Good Parts"?

  • Embrace JavaScript's strengths: Focus on using JavaScript's functions, loose typing, and dynamic objects effectively.
  • Avoid bad parts: Learn to identify and avoid JavaScript's problematic features, such as global variables and certain operators.
  • Use of closures and prototypes: Understand and utilize closures and prototypal inheritance to write more expressive and powerful code.
  • Adopt a disciplined style: Follow the book's style recommendations to write clear and consistent JavaScript code.

What are the best quotes from "JavaScript: The Good Parts" and what do they mean?

  • "JavaScript is a language with more than its share of bad parts." This highlights the importance of being selective about which features to use.
  • "JavaScript is a block of marble, and I chip away the features that are not beautiful until the language's true nature reveals itself." This metaphor emphasizes the book's approach of focusing on the language's strengths.
  • "The good parts are good enough to compensate for the bad parts." This reassures readers that by focusing on the good parts, they can still achieve great results with JavaScript.
  • "JavaScript is Lisp in C's clothing." This suggests that JavaScript's true power lies in its functional programming capabilities, similar to Lisp.

How does "JavaScript: The Good Parts" define the good parts of JavaScript?

  • Functions as first-class objects: JavaScript treats functions as first-class citizens, allowing them to be passed around and manipulated like any other object.
  • Dynamic objects with prototypal inheritance: JavaScript's objects are flexible and can inherit properties directly from other objects without the need for classes.
  • Object and array literals: These provide a convenient and expressive way to create and manipulate data structures.
  • Avoidance of bad parts: The book identifies and advises against using features that can lead to errors or poor code quality.

What are some of the bad parts of JavaScript according to "JavaScript: The Good Parts"?

  • Global variables: They can lead to unpredictable behavior and are difficult to manage in large programs.
  • Semicolon insertion: This can cause unexpected errors and should not be relied upon.
  • Type coercion with == and !=: These operators can lead to confusing and unintended results due to automatic type conversion.
  • The with statement: It can make code difficult to read and debug, and should be avoided.

How does "JavaScript: The Good Parts" suggest handling global variables?

  • Minimize usage: The book advises minimizing the use of global variables to reduce complexity and potential conflicts.
  • Single global variable: Create a single global variable to act as a namespace for your application, containing all other variables and functions.
  • Use closures: Employ closures to encapsulate variables and functions, reducing reliance on global scope.
  • Avoid implied globals: Always declare variables explicitly to prevent them from becoming global unintentionally.

What is the role of functions in "JavaScript: The Good Parts"?

  • Modular unit: Functions are the fundamental modular unit in JavaScript, used for code reuse and information hiding.
  • First-class objects: Functions can be stored in variables, passed as arguments, and returned from other functions.
  • Closure: Functions can capture and remember the environment in which they were created, allowing for powerful programming patterns.
  • Invocation patterns: The book discusses different ways to invoke functions, each with its own implications for the this keyword.

How does "JavaScript: The Good Parts" explain prototypal inheritance?

  • Class-free system: JavaScript uses a class-free object system where objects inherit directly from other objects.
  • Prototype chain: Objects can delegate property access to their prototype, forming a chain that can be traversed for property lookup.
  • Dynamic relationship: The prototype relationship is dynamic, meaning changes to a prototype are immediately reflected in all objects that inherit from it.
  • Simplified inheritance: The book simplifies the process of creating objects with a specific prototype using a custom Object.create method.

What style recommendations does "JavaScript: The Good Parts" provide?

  • Consistent indentation: Use consistent indentation to improve code readability and structure.
  • Use of blocks: Always use blocks with structured statements like if and while to prevent errors.
  • Avoid line breaks in expressions: Break lines after operators to avoid issues with semicolon insertion.
  • Declare variables at the top: Declare all variables at the top of a function to avoid confusion due to JavaScript's lack of block scope.

How does "JavaScript: The Good Parts" suggest using JSON?

  • Data interchange format: JSON is a lightweight format for exchanging data between programs, based on JavaScript's object literal notation.
  • Use JSON.parse: Instead of eval, use JSON.parse to safely parse JSON data and avoid security risks.
  • Avoid innerHTML with JSON: Be cautious when using JSON data with innerHTML to prevent script injection attacks.
  • Minimal and portable: JSON's design is minimal and portable, making it easy to implement and use across different programming languages.

What is JSLint and how is it related to "JavaScript: The Good Parts"?

  • Code quality tool: JSLint is a tool that checks JavaScript code for potential problems and enforces a stricter subset of the language.
  • Avoids bad parts: It helps programmers avoid JavaScript's bad parts by flagging problematic patterns and practices.
  • Style enforcement: JSLint enforces the style recommendations from the book, promoting cleaner and more maintainable code.
  • Global variable detection: It identifies undeclared variables to prevent accidental creation of global variables.

Review Summary

4.23 out of 5
Average of 8k+ ratings from Goodreads and Amazon.

JavaScript: Τα Καλά Μέρη λαμβάνει ανάμεικτες κριτικές αλλά γενικά θεωρείται αξιόλογο. Οι αναγνώστες εκτιμούν την περιεκτική εξήγηση των καλύτερων χαρακτηριστικών της JavaScript και την ειλικρινή κριτική των αδυναμιών της γλώσσας. Πολλοί το βρίσκουν αποκαλυπτικό και πολύτιμο για έμπειρους προγραμματιστές που είναι νέοι στη JavaScript. Ωστόσο, κάποιοι επικρίνουν την οργάνωσή του, τις ξεπερασμένες πληροφορίες και τις περιστασιακά συγκεχυμένες εξηγήσεις. Το γνώμη του βιβλίου και η εστίαση στις βέλτιστες πρακτικές επαινούνται από κάποιους, αλλά θεωρούνται υπερβολικά δογματικές από άλλους. Συνολικά, θεωρείται μια σημαντική ανάγνωση για σοβαρούς προγραμματιστές JavaScript, παρά τις περιορισμένες του πτυχές.

Your rating:

About the Author

Ο Ντάγκλας Κρόκφορντ είναι μια αναγνωρίσιμη προσωπικότητα στον κόσμο του προγραμματισμού JavaScript. Είναι πιο γνωστός για το έργο του JavaScript: The Good Parts, το οποίο έχει γίνει κλασικό στον τομέα. Ο Κρόκφορντ πιστώνεται με την εξάπλωση του JSON (JavaScript Object Notation) και την ανάπτυξη εργαλείων όπως το JSLint. Οι ισχυρές απόψεις του σχετικά με τις βέλτιστες πρακτικές της JavaScript έχουν επηρεάσει σημαντικά την ανάπτυξη και τη χρήση της γλώσσας. Η εμπειρία του Κρόκφορντ προέρχεται από χρόνια εργασίας με τη JavaScript, και είναι γνωστός για την άμεση, συχνά κριτική προσέγγισή του στη γλώσσα. Οι συνεισφορές του έχουν βοηθήσει να νομιμοποιηθεί η JavaScript ως μια σοβαρή γλώσσα προγραμματισμού και έχουν διαμορφώσει τον τρόπο που οι προγραμματιστές προσεγγίζουν τη χρήση της στη σύγχρονη ανάπτυξη ιστού.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Feb 28,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →