J'ai la méthode suivante
p>
const isPrivate = (input) => { return input && input.type && input.type === "private"; } console.log(isPrivate());
3 Réponses :
Il y a un problème avec votre variable code> entrée code>. L'erreur indique simplement que Si vous souhaitez tester d'abord non défini, changez-le à p> de cette façon, il va vérifier si c'est NULL d'abord, et s'il est valide, évaluera comme vrai et passer au calcul suivant. p> p> entrée code> est indéfini, ce qui signifie que vous ne l'avez jamais donné une valeur. JavaScript n'essaiera pas de résoudre une valeur non définie comme false, mais plutôt jeter l'erreur.
Il ne lui demande pas d'être vrai code>, mais vérité-y i> - les chaînes non vides sont la vérité-y.
@Adiga êtes-vous sûr? Je viens de tester var intrant; INPUT! = NULL && INPUT && INPUT.TYPE && INPUT.TYPE === "PRIVATE"; CODE> Dans la console de ma navigateur et il est renvoyé
false code> correctement.
Les opérateurs logiques ne soient ni les booléens.
p> !! Entrée code> Assurez-vous que la saisie est une valeur de vérité et retourne un booléen.
INPUT.TYPE === "Privé" code> retournera également un booléen. Étant donné que les deux côtés de l'opérateur évaluent aux booléens, vous obtiendrez la valeur que vous attendez. P>
const isPrivate = (input) => {
return !!input && input.type === "private";
}
console.log(isPrivate());
console.log(isPrivate({}));
console.log(isPrivate(''));
console.log(isPrivate({ type: 'public' }));
console.log(isPrivate({ type: 'private' }));
La distribution forcée de l'évaluation de l'existence d'intrants à Boolean n'est pas garantie. Test d'existence explicitement. Cela précise également l'intention de l'évaluation. De plus, exploiter l'interprète pour vérifier les erreurs d'intention en inversant l'ordre des opérandes de comparaison pour l'opérateur ===. Comparaison d'entrée.Type à "Private" littéral, l'interprète ne laissera pas l'erreur ["privée" = entrée.type], mais irait bien avec [INPUT.TYPE = "Private"]. Enfin, il est très peu coûteux d'utiliser des parenthèses pour améliorer sa séance de la délimitation des phrases. P>
const isprivate = (entrée) => { retour ("non défini"! == type d'entrée) && ("non défini"! == type d'entrée.type) && ("privé" === INPUT.TYPE); }; p>
L'entrée n'est pas définie si vous ne le transmettez pas sous forme de paramètre i>.
Impossible de reproduire, il enregistre
non défini code> comme prévu lorsque je l'exécute localement.
@Lewis ne devrait pas l'évaluer la première condition à Faux et retourne faux? Pourquoi si (entrée) évalue à FALSE
&& Code> Dans JavaScript retourne des opérandes, pas des booléens, à moins que l'opérande renvoyé soit un booléen.
Dupliqué possible de Pourquoi les opérateurs logiques (&& et ||) renvoient toujours un résultat booléen?