Maison > interface Web > js tutoriel > JavaScript `apply()` vs `call()` : quand dois-je utiliser lequel ?

JavaScript `apply()` vs `call()` : quand dois-je utiliser lequel ?

Linda Hamilton
Libérer: 2024-12-22 19:07:14
original
922 Les gens l'ont consulté

JavaScript `apply()` vs. `call()`: When Should I Use Which?

Méthodes d'appel en JavaScript : exploration de apply() et call()

Lors de l'appel de fonctions en JavaScript, vous disposez de deux méthodes principales : à votre disposition : apply() et call(). Les deux vous permettent d'exécuter des fonctions avec une valeur this spécifiée, mais ils diffèrent dans la manière dont les arguments sont transmis.

apply(thisValue, argumentsArray)

  • Constructions un tableau à partir des argumentsArray fournis.
  • Appelle la fonction avec la valeur thisValue spécifiée et les éléments du tableau comme étant individuels arguments.
  • Exemple :
const func = function() {
    console.log("Hello world!");
};
func.apply(null, ["John", 35]); // Invokes "Hello world!" and logs "John" and 35.
Copier après la connexion

call(thisValue, arg1, arg2, ...argN)

  • Traite les arguments comme des paramètres individuels.
  • Appelle le fonction avec la valeur thisValue spécifiée et les arguments fournis sous forme de valeurs distinctes.
  • Exemple :
func.call(null, "John", 35); // Invokes "Hello world!" and logs "John" and 35.
Copier après la connexion

Mnémoniques :

  • Appliquer : A pour un tableau de arguments.
  • Appel : C pour les arguments séparés par des virgules.

Différences de performances :

  • Il existe généralement des différences de performances négligeables entre apply() et call().
  • Cependant, apply() peut être légèrement plus rapide lorsqu'il s'agit de traiter un grand nombre d'arguments.

Meilleurs cas d'utilisation :

  • Utiliser apply() : Lorsque vous souhaitez transmettre un tableau d'arguments à une fonction, notamment lorsque le nombre d'arguments est inconnu dans advance.
  • Utilisez call() : Lorsque vous souhaitez transmettre des arguments individuels à une fonction et avoir plus de contrôle sur leur ordre.

ES6 Ajouts :

  • Dans ES6, vous pouvez utiliser l'opérateur spread avec call() pour répartir un tableau en individus arguments.
  • Exemple :
func.call(null, ...["John", 35]); // Same as func.apply(null, ["John", 35]).
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal