Bonjour NoSmoking,
D'abord merci pour ta réponse
Oui, je m'attends à avoir pour retour 0.
Mais mon switch fait sa besogne si et seulement si on ajoute une lettre (uniteMesure) comme suit :
var nombreUniteMesure = '150k';
Seulement, je n'arrive pas à répondre à la dernière partie de la question 1 de l'exercice 1.2.3 "Si l'on n’indique pas d'unité, par exemple : var shortenBytes = '887';, on supposera que la variable testée indique des octets". Et si on reprend la solution donnée avec le fameux //fall trough
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| var shortenBytes = '150k';
var letter = shortenBytes.substr(shortenBytes.length - 1); // Retourne le dernier caractère
var bytes = parseInt(shortenBytes, 10); // Convertit la chaîne de caractères '150K' en le nombre 150.
// Gère le cas où shortenBytes n'est pas une valeur numérique convertissable.
if (isNaN(bytes)) {
bytes = false;
// Gère le cas où le dernier caractère de `shortenBytes` est une lettre.
} else if (isNaN(letter)) {
// Teste la valeur de la lettre mise en majuscule.
switch (letter.toUpperCase()) {
case 'T':
bytes *= 1024; // Multiplie par 1024.
//fall through
case 'G':
bytes *= 1024; // Multiplie par 1024.
//fall through
case 'M':
bytes *= 1024; // Multiplie par 1024.
//fall through
case 'K':
bytes *= 1024; // Multiplie par 1024.
break; // Sort du switch.
default:
bytes = false; // Renvoie false si la lettre est inconnue.
}
}
console.log(bytes); |
Pour moi, l'absence d'unité ne correspondant à aucun des cas du switch, je ne comprends vraiment pas pourquoi on n'a pas false pour retour.
Et cependant le code fonctionne bien si on ne met pas d'unité.
Je n'arrive pas à comprendre comment...
Bien à toi
maed
Partager