80 votes

Pourquoi est-ce que {. . . .0} est évalué à {} ?

Je viens de trouver {....0} dans le code de l'ami. En l'évaluant dans la console, on obtient {} (objet vide).

Pourquoi ? Quelle est la signification de 4 points en JavaScript ?

90voto

NikxDa Points 2099

Les quatre points n'ont en fait aucune signification. ... est le opérateur de diffusion y .0 est le diminutif de 0.0 .

En étalant 0 (ou n'importe quel nombre) dans un objet, on obtient un objet vide, donc {} .

56voto

Jonas Wilms Points 52419

Trois points dans un objet littéral sont une propriété étalée 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 chiffre littéral. .0 est la même chose que 0.0 . Par conséquent, ceci :

 { ...(0.0) }

étale toutes les propriétés de l'objet nombre dans l'objet, cependant comme les nombres n'ont pas de propriétés (propres) vous obtenez un objet vide.

6voto

En termes simples {...} L'opérateur d'étalement en javascript étend un objet/rayon avec un autre.

Ainsi, lorsque babelifier essaie d'étendre un tableau avec un autre, il doit identifier s'il essaie d'étendre un tableau ou un objet.

Dans le cas de array il effectue des itérations sur les éléments.

Dans le cas de object il parcourt les clés.

Dans ce scénario, le babelyfier essaie d'extraire des clés pour number en vérifiant l'objet own property call qui manque pour number donc il retourne un objet vide.

0voto

an0nym0us Points 1380

Opérateur d'écartement {...} permet aux itérables de s'étendre. Cela signifie que les types de données qui peuvent être définis sous forme de key-value Les paires peuvent être étendues. En termes de Object nous appelons la paire clé-valeur comme une propriété d'objet et sa valeur alors qu'en termes de arrays nous pouvons considérer l'index comme la clé et l'élément du tableau comme sa 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 l'index comme clé, ici il remplace l'élément '1' de arr1 avec '3' parce que les deux ont le même index dans des tableaux différents.

Avec les chaînes de caractères, l'opérateur d'étalement renvoie un objet non vide. Comme la chaîne est un tableau de caractères, il la traite 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 primitives, il retourne un objet vide.

avec des numéros

let obj6 = { ...0.0, ...55} // {}

avec booléen

let obj7 = { ...true, ...false} // {}

En conclusion, les types de données qui peuvent être traités sous la forme de paires clé-valeur lorsqu'ils sont utilisés avec l'opérateur d'étalement {...} renvoie un objet non vide, sinon il renvoie un objet vide. {}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X