Maison >interface Web >js tutoriel >Comment puis-je récupérer dynamiquement les noms et les valeurs des paramètres de fonction 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.
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; }
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 []
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.
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!