


L'opérateur de fusion nul (??): une approche moderne pour gérer Nulls
Aug 01, 2025 am 07:45 AML'opérateur de coalescence NULL (??) fournit un moyen concis d'attribuer des valeurs par défaut lorsqu'il s'agit de NULL ou non défini. 1. Il renvoie l'opérande gauche si elle n'est pas nulle ou non définie; Sinon, il renvoie le bon opérande. 2. Contrairement à l'opérateur logique ou (||), ?? déclenche uniquement le repli pour null ou non défini, préservant les valeurs de fausseté comme "", 0 ou false. 3. Les cas d'utilisation courants incluent les paramètres par défaut, les paramètres de configuration, les réponses de l'API et la gestion des entrées utilisateur. 4. Le cha?nage est pris en charge: Valeur1 ?? valeur2 ?? Value3 renvoie la première valeur non nulle. 5. Des différences de langage existent - C # prend en charge les types nullables, PHP supprime les erreurs variables non définies et JavaScript vérifie strictement Null et indéfini. 6. La priorité de l'opérateur nécessite des parenthèses lors de la combinaison avec && ou ||. En utilisant ?? conduit à un code plus s?r et plus prévisible en distinguant les valeurs manquantes des valeurs de fausseté valides, ce qui le rend supérieur à || Pour une affectation de valeur par défaut lorsque l'intention est de gérer uniquement null ou non définie, et cette clarté améliore la lisibilité et la fiabilité du code.
Le ??
L'opérateur - connu sous le nom de l'opérateur de coalescence nulle - est une fa?on propre et moderne de gérer les valeurs null
dans des langues comme C #, PHP, JavaScript (à partir de l'ES2020) et d'autres. Il simplifie l'attribution de valeur par défaut lors de la gestion des expressions potentiellement null
ou undefined
, ce qui rend le code plus lisible et moins sujet aux erreurs que les contr?les traditionnels.

Ce que fait l'opérateur de fusion nul
Le ??
L'opérateur renvoie l'opérande de gauche s'il n'est pas null
ou undefined
; Sinon, il renvoie l'opérande droit.
String name = userInput ?? "Invité";
Dans cet exemple:

- Si
userInput
n'est pasnull
,name
obtient la valeur deuserInput
. - Si
userInput
estnull
,name
par défaut"Guest"
.
Ceci est fonctionnellement équivalent à:
Nom de cha?ne = userInput! = null? UserInput: "invité";
Mais il est plus court, plus clair et évite de répéter la variable.

Pourquoi c'est mieux que Ternary ou ou (||)
Une alternative commune - en particulier en JavaScript - a été l'opérateur logique ou ( ||
):
const name = userInput || "Invité";
Mais il y a une différence clé: ||
retombe sur n'importe quelle valeur de fausset (comme ""
, 0
, false
, NaN
), pas seulement null
ou undefined
.
const userInput = ""; const name = userInput || "Invité"; // Renvoie "invité" - peut-être pas prévu!
Avec ??
, seuls null
ou undefined
déclenchent le secours:
const name = userInput ?? "Invité"; // Renvoie "" - conserve la cha?ne vide
Donc, si vous voulez faire la distinction entre les valeurs null
et valides mais fausses, ??
est plus s?r et plus précis.
Cas d'utilisation pratiques
Voici des scénarios communs où ??
brille:
- Paramètres de fonction par défaut (dans les langages qui le prennent en charge)
- Fallback de configuration
- Gestion de la réponse API
- Saisie des entrées utilisateur
Par exemple, en C #:
int timeout = config.timeout ?? 30;
Ou en php:
$ thème = $ _Session ['thème'] ?? 'lumière';
Vous pouvez également encha?ner plusieurs ??
Opérateurs:
String displayName = user.ProvidedName ?? user.Username ?? "Anonyme";
Cela se lit naturellement: ?Utilisez le nom fourni si disponible, sinon le nom d'utilisateur, sinon les appelez anonymes.?
Mises en garde et différences de langue
- En C # ,
??
Fonctionne avec des types de valeur nullables et des types de référence. - En PHP , il renvoie l'opérande droit si la gauche est
null
(ne déclenche pas des avertissements si la variable n'existe pas, contrairement??=
). - En javascript ,
??
est uniquement pournull
etundefined
- il respecte0
,false
et""
.
De plus, la priorité de l'opérateur est importante. ??
a une priorité plus faible que la plupart des opérateurs, alors enveloppez-le entre parenthèses lors du mélange avec &&
ou ||
:
const result = (valeur ?? defaultValue) && isActive;
Fin de compte
L'opérateur de coalescence nulle n'est pas seulement du sucre syntaxique - il encourage une manipulation plus s?re et plus intentionnelle des valeurs null
. En se concentrant uniquement sur null
et undefined
, il évite les pièges des secours basés sur la vérité. Une fois que vous commencez à utiliser ??
, vous vous retrouverez probablement à atteindre ||
Moins souvent dans les scénarios de valeur par défaut.
Fondamentalement: utiliser ??
Lorsque vous voulez dire ?si cela manque, utilisez-le? - pas ?si cela est fausse?. C'est un petit opérateur avec un grand impact sur la clarté du code.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

L'utilisation === au lieu de == est la clé pour éviter les erreurs de conversion de type PHP, car == provoquera des résultats inattendus, et === Comparez les valeurs et les types en même temps pour garantir un jugement précis; Par exemple, 0 == "false" est vrai mais 0 === "false" est faux, donc lors de la gestion des valeurs de retour qui peuvent être 0, des cha?nes vides ou false, === doit être utilisée pour éviter les erreurs logiques.

éviter lesternaries de la réduction de la réduction de la réduction; useif-elsechainsInstead.2.Don’sUserternariesForsideEffects lienfunctionCalls; useIf-elseforontrolflow.3.skipternarieswithcomplexexpressionsInvolvinglongSlongsorlogic; breaktovariablesorfunctions.4.avoid.

Thelullcoalescingoperator (??) fournitaConcisewaytoassignDefaultValues whendealing withnullorundfined.1.itreturnstheleftoperAndifiTsNotNullorUndEfined; sinon, itreturnsherstheroperand.2.Unlikethelogicalor (||)

La structure de contr?le alternative de PHP utilise des colons et des mots clés tels que EndiF et ENDFOR au lieu de bretelles bouclées, ce qui peut améliorer la lisibilité du HTML mixte. 1. If-elseif-else commence par un c?lon et se termine par une endif, ce qui rend le bloc de condition plus clair; 2. Forach est plus facile à identifier dans la boucle de modèle, et EndForEach indique clairement la fin de la boucle; 3. Pour et bien que sont rarement utilisés, ils sont également soutenus. Cette syntaxe présente des avantages évidents dans les fichiers de vue: réduire les erreurs de syntaxe, améliorer la lisibilité et est similaire à la structure de balises HTML. Mais les accolades bouclées devraient continuer à être utilisées dans des fichiers PHP purs pour éviter la confusion. Par conséquent, une syntaxe alternative est recommandée dans les modèles qui mélangent PHP et HTML pour améliorer la maintenabilité du code.

ToujoursUsestrictEquality (=== et! ==) injavaScriptToAvoiNunexpectedBehaviorfromtypeCoERCION.1.Looseequality (==) CanLeadToCounteriTitiveSultsfausetperperformSypeConversion, faisant 0 == false.2

UseGuardClauSesToreTurnearlyandflattenstructure.2.ExtractComplexConditioneSyscriptiveFunctionSorVariblesforclarityAndReuse.3.Replacemultipleconditioncombinations withAlookUpTableorStrategypatterntocentraliselogic.4

Parfois, cela affectera les performances, selon le langage, l'optimisation du compilateur et la structure logique; 1. Si les instructions sont exécutées dans l'ordre et que la complexité du temps du pire des cas est O (n), la condition la plus probable doit être placée en premier; 2. L'instruction Switch peut être optimisée par le compilateur à une table de saut d'O (1) lorsque les conditions sont des entiers continus, de nombreuses branches et les valeurs sont des constantes compilées; 3. Lorsqu'une seule variable est comparée à plusieurs entiers constants et qu'il existe de nombreuses branches et commutateurs sont plus rapides; 4. Lorsqu'il implique un jugement de portée, des conditions complexes, des types non-entiers ou moins de branches, si c'est plus approprié ou a des performances similaires; 5. Différentes langues (telles que C / C, Java, JavaScript, C #) ont des degrés d'optimisation différents de commutateurs, et ils doivent être testés en combinaison avec des tests réels; Swi doit être utilisé en premier

Utiliser && toskipexpsenveroperations andguardagainstnull / undefinedbyshort-circuitingonfalsyvalues; 2.User || tosetDefaultSefficily, butbewareitTreatSallfalsyValues (like0) asinvalid, soPrefer?
