Maison > interface Web > js tutoriel > le corps du texte

Paramètres restants de la fonction ECMAScript6 (paramètres de repos)_compétences javascript

WBOY
Libérer: 2016-05-16 15:55:36
original
1543 Les gens l'ont consulté

Nous savons qu'il existe un objet arguments à l'intérieur de la fonction JS, qui peut obtenir tous les paramètres réels. Maintenant, ES6 nous a apporté un nouvel objet, qui peut obtenir les paramètres à l'exception des paramètres de départ, c'est-à-dire les paramètres restants (beaucoup d'absurdités O(∩_∩)O~).

Ce nouvel objet est différent des arguments. C'est un identifiant commun personnalisé par le programmeur. Il suffit de le précéder de trois points :...

function func(a, ...rest) {
 console.log(a)
 console.log(rest)
}
func(1)
func(1, 2, 3, 4)
Copier après la connexion

Faites attention au deuxième paramètre rest of func, qui a trois points devant. Après l'avoir défini, il a été appelé deux fois, et les résultats sont les suivants

Vous pouvez voir que le premier appel, rest est un tableau vide, et la deuxième fois est [2, 3, 4].

Autre exemple, définir 2 paramètres devant

function func(a, b, ...rest) {
 console.log(a, b)
 console.log(rest)
}
func(1, 2)
func(1, 2, 3, 4)
Copier après la connexion

Les résultats de sortie sont les suivants

Vous auriez dû comprendre la signification des paramètres restants à travers les deux exemples ci-dessus.

Il reste des paramètres, alors ne suivez pas d'autres paramètres plus tard, sinon une erreur sera signalée

function func(a, ...rest, b) {
 
}
Copier après la connexion

Un paramètre b est ajouté après le repos, et Firefox signalera une erreur

Lorsque vous utilisez les paramètres restants, l'attribut de longueur de la fonction subira quelques modifications

function func(a, b, ...rest) {
}
func.length // 2
Copier après la connexion

C'est-à-dire que la longueur n'inclut pas le repos et est de 2.

Certains étudiants peuvent se demander : ne peut-il y avoir aucun paramètre devant les paramètres restants ? La réponse est oui

function func(...rest) {
 console.log(rest)
}
func(1) // [1]
func(1, 2, 3, 4) // [1,2,3,4]
Copier après la connexion

Le reste ici a en fait des fonctions similaires aux arguments. Certains étudiants pensent que cela peut remplacer les arguments ? ECMAScript a cette intention. Les paramètres de repos étaient déjà inclus dans l'ES4 abandonné (les étudiants familiers avec AS3 devraient le savoir après l'abandon de l'ES4, les paramètres de repos ont été conservés dans l'ES6).

Veuillez noter que rest ne peut pas être utilisé avec des arguments et une erreur sera signalée

function func(...rest) {
 console.log(rest)
 console.log(arguments)
}
Copier après la connexion

La console Firefox est la suivante

La différence entre les arguments et les paramètres restants

arguments est un pseudo-tableau (de type tableau)
Les paramètres restants sont un vrai tableau (Array), avec toutes les méthodes sur Array.prototype
Il y a l'appelé sur les arguments et l'appelant
sur l'appelé. Comme

function func(a, ...rest) {
  console.log(rest instanceof Array)
}
func(1, 2) // true

Copier après la connexion

Enfin nous terminons par une application pratique des paramètres restants

/*
 * 任意个数相加
 *
 * **示例**
 * sum(1)
 * sum(1, 2)
 * sum(1, 2, 3)
 */
function sum(first, ...rest) {
  var result = first
  var i = 0
  var len = rest.length
  while (i < len) {
    result += rest[i]
    i++
  }
  return result
}
Copier après la connexion

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal