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
889 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!

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
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