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
Barbara Streisandoriginal
2024-12-06 10:46:11218parcourir

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

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

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;

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

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

var args = Array.slice(arguments);

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!

Déclaration:
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