Maison > interface Web > js tutoriel > Comment puis-je récupérer dynamiquement les noms et les valeurs des paramètres de fonction JavaScript ?

Comment puis-je récupérer dynamiquement les noms et les valeurs des paramètres de fonction JavaScript ?

Barbara Streisand
Libérer: 2024-12-06 10:46:11
original
217 Les gens l'ont consulté

How Can I Dynamically Retrieve JavaScript Function Parameter Names and Values?

Comment récupérer dynamiquement les détails des paramètres de fonction en JavaScript

Dans certains scénarios, accéder dynamiquement aux noms et valeurs des paramètres d'une fonction devient nécessaire. Cet article explore une solution robuste à ce problème.

Fonction pour extraire les noms de paramètres

La fonction suivante, getParamNames, peut extraire les noms de paramètres de n'importe quelle fonction fournie :

var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;

function getParamNames(func) {
  var fnStr = func.toString().replace(STRIP_COMMENTS, '');
  var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
  if(result === null)
     result = [];
  return result;
}
Copier après la connexion

Utilisation et exemples

getParamNames(getParamNames) // returns ['func']
getParamNames(function (a,b,c,d){}) // returns ['a','b','c','d']
getParamNames(function (a,/*b,c,*/d){}) // returns ['a','d']
getParamNames(function (){}) // returns []
Copier après la connexion

Remarque : gestion des paramètres par défaut

Avec le Avec l'avènement d'ES6, les paramètres par défaut peuvent désactiver la fonction getParamNames. Pour résoudre ce problème, une version mise à jour est fournie :

var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\'|[^'\r\n])*')|("(?:\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
Copier après la connexion

Bien que cette version améliorée gère les paramètres par défaut dans la plupart des cas, des exceptions peuvent survenir.

Récupération des valeurs des paramètres

Dans En plus d'obtenir les noms des paramètres, on peut également exiger les valeurs correspondantes. Ceci est facilement accessible via la variable locale arguments, qui peut être convertie en tableau :

var args = Array.prototype.slice.call(arguments);
Copier après la connexion

Alternativement, si des génériques de tableau sont disponibles :

var args = Array.slice(arguments);
Copier après la connexion

En employant ces techniques, les développeurs peut accéder dynamiquement aux paramètres et aux valeurs des fonctions pour divers besoins et personnalisations.

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