En JavaScript, il y a deux valeurs qui disent essentiellement «je n'existe pas» - undefinedet null.
Une propriété à laquelle un programmeur n'a rien assigné le sera undefined, mais pour qu'une propriété devienne null, elle nulldoit lui être explicitement assignée.
J'ai pensé une fois qu'il y avait un besoin de nullparce que undefinedc'est une valeur primitive et nullun objet. Ce n'est pas, même si typeof nullcela donnera 'object': en fait, les deux sont des valeurs primitives - ce qui signifie que ni undefinedni nullne peut être retourné à partir d'une fonction de constructeur, car les deux seront convertis en un objet vide (il faut lancer une erreur pour proclamer l'échec des constructeurs).
Ils sont également tous deux évalués falsedans des contextes booléens. La seule vraie différence à laquelle je puisse penser est que l'un évalue à NaN, l'autre à 0dans des contextes numériques.
Alors pourquoi y a-t-il les deux undefinedet nullsi cela ne fait que confondre les programmeurs qui vérifient de manière incorrecte nulllorsqu'ils essaient de savoir si une propriété a été définie ou non?
Ce que j'aimerais savoir, c'est si quelqu'un a un exemple raisonnable où il est nécessaire d'utiliser nullce qui ne pourrait pas être exprimé en utilisant à la undefinedplace.
Ainsi, le consensus général semble être que cela undefinedsignifie «il n'y a pas de telle propriété» alors que nullsignifie «la propriété existe, mais n'a aucune valeur».
Je pourrais vivre avec cela si les implémentations JavaScript imposaient réellement ce comportement - mais undefinedc'est une valeur primitive parfaitement valide, donc elle peut facilement être attribuée à des propriétés existantes pour rompre ce contrat. Par conséquent, si vous voulez vous assurer qu'une propriété existe, vous devez utiliser l' inopérateur ou de hasOwnProperty()toute façon. Encore une fois: quelle est l'utilité pratique des valeurs séparées pour undefinedet null?
J'utilise en fait undefinedquand je veux annuler les valeurs de propriétés qui ne sont plus utilisées mais que je ne veux pas delete. Dois-je utiliser à la nullplace?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.Non, undefineddit seulement ça.
undefined.