11484 sujets

JavaScript, DOM et API Web HTML5

Bonsoir tout le monde. J'ai une question dont j'attends une réponse. En fait, dans un tutoriel sur javascript, il est dit que seuls sont considérés par javascript comme contenus faux un nombre qui la valeur zéro (0) et une chaîne de caractère vide. Or, dans le code ci-après, j'ai l'impression que zéro est bel et bien considéré comme contenu vrai. Qu'en-est-il donc? Voici le code:
<script type="text/javascript">
var conditiontest='Fonctionnera? Fonctionnera pas?', nbre=parseInt(prompt('Entrez un nombre')), result;
result=nbre;
if(conditiontest){
alert('Fonctionne!');
if(result){
alert('Le résultat est nul');
}else{
alert(result);
alert(typeof result);
}
}else{
alert('Ne fonctionne pas!')
}
</script>
Au résultat, le type de result est bien number, alors que, sauf si c'est moi qui ne comprends pas, son type devrait être boolean
Salut

Voir : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Boolean

La valeur passée premier paramètre est, si nécessaire, convertie en valeur booléenne. Si la valeur est omise ou est 0, -0, null, false, NaN, undefined ou une chaine de caractères vide (""), l'objet a un valeur initiale à false (faux). Si l'objet DOM document.all est passé en argument, la valeur initiale sera également false. Toutes les autres valeurs, y compris un objet ou une chaine de caractères "false", créént un objet avec une valeur initiale à true (vrai).

Ne pas confondre les valeurs primitives booléennes true et false avec les valeurs true et false d'un objet Booléen.


Votre code est inutilement complexe !

Pour le même simplifié, et pour 0 :

 {
        let nbre = parseInt(prompt('Entrez un nombre'));

        if (nbre) {
            console.log('Le résultat est true', nbre, typeof nbre);
        } else {
            console.log('Le résultat est false', nbre, typeof nbre);
        }
    }


Le résultat est false 0 number

Autre test :

{
        let arTest = [0, 5, 7, 0];

        for (const nombre of arTest) {
            if (false == nombre) { // attention égal est == pas === (strictement égal) !
                console.log(`La condition false == nombre est true pour le nombre ${ nombre }`);
            } else {
                console.log(`La condition false == nombre est false pour le nombre ${ nombre }`);
            }
        }
    }


La condition false == nombre est true pour le nombre 0
La condition false == nombre est false pour le nombre 5
La condition false == nombre est false pour le nombre 7
La condition false == nombre est true pour le nombre 0