Selon la documentation de MDN surundefined
:
Dans les navigateurs modernes (JavaScript 1.8.5 / Firefox 4+), undefined est une propriété non configurable et non inscriptible selon la spécification ECMAScript 5. Même lorsque ce n'est pas le cas, évitez de le remplacer.
L'un des attributs de propriété d' undefined est qu'il n'est pas accessible en écriture.
Mais si je le fais:
var undefined = 'hello';
var test = undefined;
console.log(typeof test);
//string
Est-ce à dire que je peux écraser la valeur de undefined
? Que se passe-t-il si quelqu'un fait ça? JavaScript devrait-il en avertir?
javascript
typeof
pmiranda
la source
la source
typeof test === "undefined"
)typeof undefined
revient"undefined"
dans des circonstances normales."undefined"
c'est une chaîne. La question n'est pas de savoir à quoitypeof (typeof undefined)
évalue. Il s'agit de savoir à quoi correspondtypeof undefined
. Il revient"undefined"
, pas"string"
typeof ______
est une expression qui s'évalue en une chaîne contenant le type de la______
. Vous comprenez mal la question.Réponses:
Un commentaire supprimé par Amy donne la solution. Vous créez une variable nommée
undefined
, et cela ne fonctionne pas si vous faites vos extraits dans la portée globale:Mais cela fonctionne efficacement si vous le faites dans une portée locale où undefined ne fait plus référence à la variable globale:
Pour éviter cette erreur, vous pouvez utiliser la
'use strict';
directive:Si vous écrivez du code où vous ne pouvez pas contrôler où il sera exécuté (par exemple, bibliothèque, intégration, etc.), c'est un bon modèle pour utiliser un IIFE qui le rend afin que vous puissiez garantir que non défini sera toujours correct / utilisable. Voici un exemple:
Tous mes tests ont été effectués en utilisant Firefox 72.0b10 (64 bits) sur Ubuntu, et le résultat du premier extrait peut différer sur un navigateur plus ancien.
la source
let indefinido= dataArray( (a) => (anotherArray.includes(someName)));
nous vérifions si cette var n'était pas définie (le résultatfind
sans aucun élément trouvé) ou non. Puis il traduitindefinido
àundefined
je vis que je teste sur Chrome et Edge, voir une différence. C'est pourquoi je suis venu ici pour demander l'avis des autres, car j'apprends aussi.void 0
Source https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
undefined
n'est pas réservé, il est donc possible de lui attribuer une nouvelle valeur.Lorsque vous n'utilisez pas,
strict mode
vous créez essentiellement une variable appeléeundefined
dans la portée locale et lui affectez unestring
valeur.undefined
est une propriété de l'objet global . La valeur initiale d'undefined est la valeur primitiveundefined
.use strict
permettra d'éviter cette erreur dans la portée globale alors qu'elle peut toujours être remplacée dans la portée locale.Si vous voulez être plus sûr, vous devez utiliser à la
void 0
place deundefined
ce qui revient toujoursundefined
.la source
undefined
en la lisant comme un argument. Comme l'IFEF n'est jamais passé d'arguments ici, ils en ferontundefined
partie. Par exemple((undefined) => console.log(typeof undefined))()