⊗jsPmLpDbg 167 of 505 menu

Συμβουλές για τον εντοπισμό σφαλμάτων στον κώδικα με το παράδειγμα βρόχων στην JavaScript

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

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

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

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

Ας υποθέσουμε ότι λύσατε το πρόβλημα και λάβατε τον ακόλουθο κώδικα:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum); // εμφανίζει 0

Ο κώδικας, ωστόσο, εμφανίζει 0. Σε αυτή την περίπτωση, το πρώτο πράγμα που πρέπει να ελέγξετε είναι αν η εκτέλεση του κώδικα μπαίνει στην if. Ας εμφανίσουμε κάτι στην κονσόλα μέσα σε αυτή:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { console.log('!'); // δεν εμφανίζει τίποτα sum += elem; } } console.log(sum);

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

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { console.log(elem[0], elem[1] + 1); // '2' και '11', '3' και '21' ... if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum);

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

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { // διορθώνουμε sum += elem; } } console.log(sum); // '021324354'

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

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { sum += +elem; // διορθώνουμε } } console.log(sum); // όλα λειτουργούν

Διορθώστε τα λάθη που έγιναν στον ακόλουθο κώδικα:

let obj = {a: 10, b: 20, c: 30, d: 40, e: 50}; let sum = 0; for (let elem in obj) { if (elem[0] === '1' && elem[0] === '2') { sum += +elem; } } console.log(sum);
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη