Comment faire la différence entre l'opérateur spread et l'opérateur reste en JavaScript ?
P粉022501495
P粉022501495 2023-09-04 11:25:07
0
2
506
<p>La syntaxe est la même, alors comment JavaScript fait-il la distinction entre les deux ? </p> <p>Est-il jugé en fonction du type de données de la variable sur laquelle l'opération est effectuée ? Ou est-ce basé sur l'endroit où la variable est utilisée ? Ou ni l'un ni l'autre ? </p>
P粉022501495
P粉022501495

répondre à tous(2)
P粉545910687

L'analyseur JavaScript détermine cela en analysant le contexte grammatical dans lequel les trois points apparaissent.

Il examinera si ces 3 points sont utilisés avec des littéraux de tableau, des appels de fonction ou des paramètres de fonction.

Pour opérateur spread : lorsque 3 points sont utilisés dans les littéraux de tableau et les appels de fonction, il est considéré comme un opérateur spread.

Pour Opérateur de paramètre restant : lorsque 3 points sont utilisés dans les paramètres d'une définition de fonction, ils sont considérés comme l'opérateur de paramètre restant.

P粉549412038

... 不是一个运算符。它是主要的语法,就像在 for 语句中的 () 一样(它们是 for fait partie de la syntaxe, pas une instance de l'opérateur de regroupement). Les opérateurs ne fonctionnent pas comme la syntaxe spread et rest.

L'analyseur sait lequel vous utilisez en raison de la position dans laquelle vous l'utilisez, puisqu'une seule de chaque position est valide et l'autre ne l'est pas. Par exemple :

// 1
const [first, ...rest] = someArray;
// 2
const { a, ...others } = someObject;
// 3
function example(p1, ...others) {
    // ...
}

...il est évident que vous utilisez la syntaxe rest dans les deux cas, puisqu'elle est utilisée dans les modes de déstructuration (1 et 2) et dans les listes d'arguments (3).

Et pour :

// 1
const x = [...someIterable];
// 2
const o = { ...someObject };
// 3
example(...someIterable);

...c'est évidemment une expansion, pas un reste, puisque vous l'utilisez dans un littéral de tableau (1), un littéral d'objet (2) et la liste de paramètres d'un appel de fonction (3).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal