Je viens de trouver {....0}
dans le code d'un ami. L'évaluer dans la console retourne {}
(objet vide).
Pourquoi donc? Quelle est la signification de 4 points en JavaScript?
Quatre points n'ont en réalité aucune signification. ...
est le opérateur d'étalement , et .0
est l'abréviation de 0.0
.
Si vous étalez 0 (ou un nombre quelconque) dans un objet, vous obtenez un objet vide, donc {}
.
Trois points dans un littéral d'objet sont un propriété spread, par exemple:
const a = { b: 1, c: 1 };
const d = { ...a, e: 1 }; // { b: 1, c: 1, e: 1 }
Le dernier point avec un 0 est un nombre littéral .0
est identique à 0.0
. Par conséquent ceci:
{ ...(0.0) }
étale toutes les propriétés de l'objet numérique dans l'objet. Toutefois, comme les nombres ne possèdent aucune propriété (propre), vous récupérez un objet vide.
En termes simples, {...}
opérateur de propagation en javascript étend un objet/un tableau avec un autre.
Ainsi, lorsque babelifier essaie d'étendre l'un avec l'autre, il doit identifier s'il essaie d'étendre un tableau ou un objet.
Dans le cas de array
, il parcourt les éléments.
Dans le cas de object
, il effectue une itération sur les clés.
Dans ce scénario, le babelyfier tente d'extraire des clés pour number
en vérifiant le own property call
de l'objet qui manque pour number
afin qu'il renvoie un objet vide.
L'opérateur Spread {...}
permet aux iterables de se développer. Cela signifie que les types de données pouvant être définis sous la forme de paires key-value
peuvent être développés. En termes de Object
, nous appelons paire clé-valeur en tant que propriété Object et sa valeur, tandis qu'en termes de arrays
, nous pouvons penser index en tant que clé et élément dans un tableau en tant que valeur.
let obj = { a: 4, b: 1};
let obj2 = { ...obj, c: 2, d: 4}; // {a: 4, b: 1, c: 2, d: 4}
let arr1 = ['1', '2'];
let obj3 = { ...arr1, ...['3']}; // {0: "3", 1: "2"}
En termes de tableau, comme il prend index comme clé, remplace ici l'élément '1' de arr1
par '3' car les deux ont le même index dans un tableau différent.
Avec des chaînes trop étendues, l'opérateur renvoie un objet non vide. Comme string est un tableau de caractères, il est traité comme un tableau.
let obj4 = {...'hi',...'hello'} // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"}
let obj5 = {...'y',...'x'} // {0: "x" }
Mais avec d'autres types de données primitifs, il renvoie un objet vide
avec des nombres
let obj6 = { ...0.0, ...55} // {}
avec booléen
let obj7 = { ...true, ...false} // {}
En conclusion, les types de données pouvant être traités sous forme de paires clé-valeur lorsqu'ils sont utilisés avec l'opérateur d'étalement {...}
renvoie un objet non vide, sinon un objet vide {}
.