JavaScript a 2 types de types: les primitives (chaînes, booléens, nombres, symboles) et les objets.
les Objets sont des structures de données complexes. L’objet le plus simple en JavaScript est l’objet simple — une collection de clés et de valeurs associées:
let myObject = { name: 'Eric Cartman'};
Mais il y a des situations où un objet ne peut pas être créé. Dans de tels cas, JavaScript fournit une valeur spéciale null
— qui indique un objet manquant.,
let myObject = null;
dans cet article, vous apprendrez tout sur null
en JavaScript: sa signification, comment le détecter, la différence entre null
Et undefined
, et pourquoi utiliser null
crée largement des difficultés de maintenance du code.
1. Le concept de null
la spécification JavaScript dit à propos de null
:
null
est une valeur primitive qui représente l’absence intentionnelle de toute valeur d’objet.,
Si vous voyeznull
(affecté à une variable ou renvoyé par une fonction), alors à cet endroit aurait dû être un objet, mais pour une raison quelconque, un objet n’a pas été créé.
Par exemple, la fonction greetObject()
crée des objets, mais aussi de retour null
lorsqu’un objet ne peut pas être créé:
Cependant, lors de l’appel de la fonction sans arguments — greetObject()
— la fonction renvoie null
., Renvoyer null
est raisonnable car le paramètre who
n’a aucune valeur et l’objet de salutation ne peut pas être créé.
1.1 analogie du monde réel de null
en pensant à une analogie du monde réel, vous pouvez imaginer une variable comme étant une boîte. Tout comme une variable peut contenir un objet, la boîte peut contenir des objets comme une théière.
mais une fois que vous recevez une boîte et l’ouvrez… et rien là! Quelqu’un a fait une erreur et vous a envoyé une boîte vide. La boîte ne contient rien, ou, en le disant différemment, contient une valeur null
.
2., Comment vérifier la valeur null
La bonne façon de vérifier pour la null
est par l’utilisation de l’opérateur d’égalité stricte:
const missingObject = null;const existingObject = { message: 'Hello!' };missingObject === null; // => trueexistingObject === null; // => false
missingObject === null
donne true
car missingObject
variable contient une balise null
valeur.
Si la variable contient une valeur non nulle, comme un objet, l’expression existingObject === null
donne false
.
2.,1 null is falsy
null
, alongside false
, 0
, ''
, undefined
, NaN
, is a falsy value. If a falsy value is encountered in conditionals, then JavaScript coerces falsy to false
.
Boolean(null); // => falseif (null) { console.log('null is truthy');} else { console.log('null is falsy'); // logs 'null is falsy'}
2.2 typeof null
Interestingly, to what value type null
evaluates to?,
typeof null; // => 'object'
Hm… comment pouvait le type d’un objet manquant d’évaluer la 'object'
? Il s’avère que typoef null
étant 'object'
était une erreur dans la première implémentation JavaScript.
Ne pas utiliser typeof
opérateur de détecter un null
valeur. Comme mentionné précédemment, utilisez l’opérateur d’égalité stricte myVar === null
.,
Si vous souhaitez vérifier si une variable contient un objet à l’aide de typeof
opérateur, vous devez vérifier contre null
aussi:
3. Le piège de null
null
peut apparaître, souvent de manière inattendue, dans des situations où vous attendez un objet. Ensuite, si vous essayez d’extraire une propriété de null
, JavaScript renvoie une erreur.,
nous allons utiliser à nouveau greetObject()
fonction et essayez d’accéder à message
propriété de l’objet retourné:
let who = '';greetObject(who).message; // throws "TypeError: greetObject() is null"
Car who
variable est une chaîne vide, la fonction renvoie null
. Lors de l’accès à la propriété message
à partir de null
, une erreur TypeError est générée.,
Vous pouvez gérer null
soit en utilisant l’option de chaînage avec nullish coalescence:
let who = '';greetObject(who)?.message ?? 'Hello, Stranger!'; // => 'Hello, Stranger!'
ou utiliser 2 alternatives décrites dans la section suivante.
4. Alternatives à null
Il est tentant de renvoyernull
lorsque vous ne pouvez pas construire un objet. Mais cette pratique a des inconvénients.
dès null
apparaît dans votre pile d’exécution, vous pouvez toujours les vérifier.,
j’essaie d’éviter le retour de null
en faveur de:
- retour d’un objet par défaut au lieu de
null
- lancer une erreur au lieu de retourner
null
rappelons que le greetObject()
fonction qui renvoie de voeux des objets.
au Lieu de retourner null
lorsque l’argument est absent, vous pouvez soit retourner un objet par défaut:
soit renvoie une erreur:
Ces pratiques vous permettent d’éviter de traiter avec des null
à tous.
5., null vs undefined
undefined
est la valeur d’une propriété de variable ou d’objet non initialisée.
Par exemple, si vous déclarez une variable sans l’assigner une valeur initiale, accéder à cette variable prend la valeur undefined
:
let myVariable;myVariable; // => undefined
La principale différence entre null
et undefined
que null
représente un objet manquant, tandis que le undefined
représente un état non initialisé.,
The strict equality operator ===
distinguishes null
from undefined
:
null === undefined; // => false
While loose equality operator ==
considers null
and undefined
equal:
null == undefined; // => true
I use the loose equality operator to check whether a variable is null
or undefined
:
6., Résumé
null
est une valeur en JavaScript qui représente un objet manquant.
l’opérateur d’égalité stricte détermine si une variable est nulle:variable === null
.
typoef
opérateur est utile pour déterminer le type d’une variable (nombre, chaîne, booléen). Cependant, typeof
est trompeur dans le cas de null
: typeof null
donne 'object'
.,
null
et undefined
sont en quelque sorte l’équivalent, encore, null
représente un objet manquant, tandis que le undefined
état non initialisé.
évitez si possible de renvoyernull
ou de définir des variables surnull
. Cette pratique conduit à la propagation des valeurs nulles et des vérifications de null
. Au lieu de cela, essayez d’utiliser des objets avec des propriétés par défaut, ou même de lancer des erreurs.
après Avoir maîtrisé null
, pourquoi ne pas master undefined
?, Suivez mon post 7 conseils pour gérer undefined en JavaScript.
Quel état avez-vous utiliser pour vérifier null
?