recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment faire la différence entre l'opérateur spread et l'opérateur reste en JavaScript ?

<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粉022501495P粉022501495480 Il y a quelques jours511

répondre à tous(2)je répondrai

  • P粉545910687

    P粉5459106872023-09-05 10:12:18

    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.

    répondre
    0
  • P粉549412038

    P粉5494120382023-09-05 09:23:13

    ... 不是一个运算符。它是主要的语法,就像在 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).

    répondre
    0
  • Annulerrépondre