


Exploitation de l'opérateur de mission de coalescence nulle (`?? =`)
Aug 01, 2025 am 07:43 AM? 2. Implémentez l'initialisation paresseuse des variables, telles que Cache ?? = initializeHaVyResource (); 3. Conserver des valeurs valides lors de la fusion des propriétés d'objet facultatives, telles que userdata.email ?? = getDefaultmail (); Cet opérateur n'écrasera pas les valeurs de fausseté telles que 0, 'ou False, ce qui est plus s?r que || =, et convient aux environnements modernes, ce qui rend finalement le code plus concis, s?r et prévisible.
L'opérateur d'attribution nuls en matière de fusion ( ??=
) est une fonctionnalité concise et puissante introduite dans le JavaScript moderne (ES2021) qui aide à rationaliser les affectations conditionnelles en fonction des vérifications null
ou undefined
. Il est particulièrement utile lorsque vous souhaitez attribuer une valeur par défaut à une variable uniquement si elle est actuellement null
ou undefined
.

Que fait ??=
L'opérateur ??=
fonctionne comme ceci:
a ?? = b;
Cela signifie:
"Si a
est null
ou undefined
, affectez b
à a
Sinon, laissez a
inchangé."

Cela équivaut à l'écriture:
if (a == null) { a = b; }
Mais beaucoup plus compact et lisible.

? IMPORTANT:
??=
ne déclenche que si le c?té gauche estnull
ouundefined
- pas d'autres fausses valeurs comme0
,''
, oufalse
.
Quand utiliser ??=
1. Définition des valeurs de configuration par défaut
Lorsque vous travaillez avec des options fournies par l'utilisateur, vous souhaitez souvent remplir les valeurs par défaut uniquement lorsque certaines propriétés sont manquantes.
fonction createUser (paramètres) { const user = {}; user.name = settings.name ?? 'Anonyme'; user.age ?? = settings.age ?? 18 user.isactive ?? = settings.isactive ?? vrai; RETOUR UTILISATEUR; }
Ou plus proprement:
fonction createUser (paramètres) { const user = {name: 'anonymous', ?ge: 18, isactive: true}; user.name ?? = settings.name; user.age ?? = settings.age; user.isactive ?? = settings.isactive; RETOUR UTILISATEUR; }
Cela évite l'écrasement de undefined
tout en préservant les valeurs de fausseté intentionnelles.
2. Initialisation paresseuse des variables
Vous pouvez utiliser ??=
pour initialiser les valeurs co?teuses ou conditionnelles uniquement en cas de besoin.
Laissez cache; cache ?? = initializeHaVyResource (); // ne fonctionne qu'une seule fois
Même si cache
est réaffecté à null
plus tard, ce modèle permet la réinitialisation - contrairement à ||=
qui échouerait sur les résultats de la fausse.
?? Comparez avec
||=
:
||=
déclenche sur n'importe quelle fausse valeur (0
,''
,false
, etc.), ce qui peut conduire à des bogues.
??=
est s?r car il ne se soucie quenull
etundefined
.
3. Travailler avec des propriétés d'objet facultatives
Lors de la fusion des données partielles, ??=
aide à préserver l'état existant.
const userdata = {id: 123, nom: 'Alice'}; userData.email ?? = getDefaultMail (userdata.name); userData.role ?? = fetchDefaulTrole (); // asynchrone ou calculé
Cela évite de nettoyer accidentellement des cha?nes valides mais vides ou false
valeurs.
Exemple pratique: Config Manager
classe config { constructeur () { this.apikey = null; this.timeout = 0; this.Retries = false; } appliquerDefaults () { this.apikey ?? = process.env.api_key; this.timeout ?? = 5000; this.Rettes ?? = 3; } }
Ici:
-
timeout
est0
→ conservé comme0
(non remplacé) -
retries
sontfalse
→ garder commefalse
- Seules les valeurs vraiment manquantes (
null
) obtiennent des défauts
Ce comportement fait ??=
idéal pour les systèmes de configuration.
Limitations et gotchas
- Non disponible dans des environnements plus anciens - nécessite ES2021 (Node.js 16, navigateurs modernes). Utilisez Babel ou vérifie le code hérité.
- Ne peut pas être utilisé directement sur la destructeur d'objets comme les paramètres par défaut, mais les applications logiques similaires:
// Destructuration avec les valeurs par défaut utilise toujours `=`, pas `?? =` const {name = 'default'} = obj; // mais vous pouvez faire: Soit {apikey} = obj; apikey ?? = 'Fallback-Key';
- Court-circuire les questions : le c?té droit n'est évalué que si la gauche est
null
/undefined
.
Soit x = 1; x ?? = console.log ('ce ne sera pas exécuté'); // pas de sortie
Résumé
Utiliser ??=
quand:
- Vous souhaitez attribuer des valeurs par défaut uniquement pour
null
/undefined
- Vous devez préserver de fausses valeurs comme
0
,''
, oufalse
- Vous effectuez une initialisation paresseuse ou la fusion de données partielles
évitez ||=
dans ces cas - c'est trop large.
Essentiellement:
??=
= "Assignez uniquement si vous manquez vraiment"
||=
= "attribuer si faux" - souvent trop agressif
Avec ??=
, votre code devient plus propre, plus s?r et plus prévisible lors de la gestion des valeurs facultatives.
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?
