Σφάλμα απουσίας σημαίας σε συνάρτηση σε JavaScript
Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε μια συνάρτηση, που θα δέχεται ως παράμετρο ένα ψηφίο και έναν αριθμό, και θα ελέγχει αν υπάρχει το καθορισμένο ψηφίο στον αριθμό:
function func(needle, num) {
// εδώ θα είναι ο κώδικας
}
Έτσι θα χρησιμοποιούμε τη συνάρτησή μας:
console.log(func('3', '12345')); // θα εμφανίσει true
Ένας προγραμματιστής έγραψε μια λύση για αυτό το πρόβλημα:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Αυτή η λύση, ωστόσο, δεν λειτουργεί σωστά.
Το πρόβλημα είναι ότι στον βρόγχο υπάρχει μια συνθήκη,
στην οποία ήδη στην πρώτη επανάληψη
θα εκτελεστεί είτε το ένα return,
είτε το άλλο, με αποτέλεσμα να γίνει
έξοδος τόσο από τον βρόγχο, όσο και από τη συνάρτηση.
Ας ξαναγράψουμε τον κώδικά μας με σωστό τρόπο, χρησιμοποιώντας σιωπηρές σημαίες σε συναρτήσεις:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}