Maison >interface Web >js tutoriel >Ne confondez pas ?? avec || en JavaScript : voici en quoi ils diffèrent !
JavaScript propose plusieurs façons de gérer les valeurs non définies ou nulles dans le code. Deux opérateurs courants utilisés à cette fin sont l'opérateur de coalescence nul (??) et l'opérateur logique OU (||). Si ces opérateurs peuvent sembler similaires à première vue, leur comportement peut différer considérablement dans certaines situations. Comprendre les différences entre ces deux opérateurs est essentiel, notamment pour les débutants qui souhaitent écrire du code plus précis et sans bug.
Dans ce guide, nous explorerons la différence entre ?? et || en JavaScript, en le décomposant étape par étape avec des exemples afin que vous puissiez passer de zéro à héros en un rien de temps.
L'opérateur de coalescence nul ?? est utilisé pour fournir une valeur de secours lorsqu'il s'agit de null ou undefined. Il vérifie uniquement si une valeur est nulle ou indéfinie et si c'est le cas, il renvoie la valeur de secours fournie.
Syntaxe :
let result = value ?? fallbackValue;
Dans cette expression, si la valeur est nulle ou indéfinie, la valeur de repli sera renvoyée.
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
Dans cet exemple, le nom est nul, donc defaultName se voit attribuer « John Doe » comme solution de secours.
L'opérateur logique OU || est un autre opérateur utilisé pour les valeurs de repli, mais il fonctionne différemment. Il vérifie si le côté gauche de l'expression est une valeur fausse. En JavaScript, les valeurs fausses incluent null, non défini, false, 0, NaN et '' (chaîne vide).
Syntaxe :
let result = value || fallbackValue;
Si la valeur est fausse, fallbackValue sera renvoyée.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
Dans ce cas, age est 0, ce qui est une valeur fausse, donc defaultAge se voit attribuer 18.
À première vue, ?? et || peut sembler servir le même objectif : fournir des valeurs de secours, mais il y a une distinction importante :
Cette différence subtile devient cruciale lorsque vous avez affaire à des valeurs fausses mais valides comme 0, '' ou faux.
let result = value ?? fallbackValue;
Ici, le nombre est 0, ce qui est une valeur valide mais fausse en JavaScript.
Le choix entre ?? et || dépend du comportement spécifique que vous souhaitez.
Exemple :
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
Dans cet exemple, une chaîne vide '' est une entrée utilisateur valide, donc ?? lui permet de passer sans le remplacer par le repli.
Exemple :
let result = value || fallbackValue;
Ici, false est traité comme faux et la solution de secours « Non connecté » est utilisée.
Maintenant que vous connaissez la différence, examinons quelques erreurs courantes que font souvent les débutants et comment les éviter.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
Problème : Vous vouliez afficher 0 comme score, mais || remplacé par « Aucun score » car 0 est faux.
Solution : Utiliser ?? pour laisser passer 0.
let count = 0; let defaultCount1 = count ?? 10; // Using nullish coalescing let defaultCount2 = count || 10; // Using logical OR console.log(defaultCount1); // Output: 0 console.log(defaultCount2); // Output: 10
let userInput = ''; let fallbackInput = userInput ?? 'default input'; console.log(fallbackInput); // Output: ''
Explication : userPreference est nulle, donc le repli false est utilisé. C'est un comportement correct pour ??.
Oui, vous pouvez utiliser les deux opérateurs dans différentes parties de la même expression si nécessaire.
Exemple :
let isLoggedIn = false; let loginStatus = isLoggedIn || 'Not logged in'; console.log(loginStatus); // Output: 'Not logged in'
Ceci vérifie d'abord s'il y a null ou non défini en utilisant ?? puis vérifie d'autres valeurs fausses en utilisant ||.
Le ?? L'opérateur est pris en charge dans les navigateurs modernes, mais pour les environnements plus anciens, vous devrez peut-être utiliser un transpileur comme Babel.
Non, ?? vérifie uniquement les valeurs nulles et indéfinies, pas les autres valeurs fausses comme false, 0 ou ''.
Comprendre la différence entre ?? et || en JavaScript est crucial pour écrire du code robuste et sans erreur. Bien que les deux opérateurs aident à fournir des valeurs de repli, leur comportement diffère lorsqu'il s'agit de gérer des valeurs fausses. Utiliser ?? lorsque vous devez vérifier null ou non défini, et utiliser || lorsque vous voulez vérifier toute valeur fausse.
En maîtrisant ces opérateurs, vous serez capable d'écrire un code plus flexible et plus précis qui se comporte exactement comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!