J'ai écrit une petite fonction introspective, un peu pour débugger, mais surtout pour m'exercer et par curiosité

Elle affiche dans un simple alert la liste des paramètres passés à la fonction où est placé l'appel, ainsi que l'arbre des appels (callstack, pile d'appels, appelez ça comme vous voulez ^^).
Jusque là, rien de très original, mystique ou bizarre.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
// affichage de tous les paramètres passés à la fonction ( pour debuggage ) 
function all(arg)
{
	var mess = "------------------------------------------\n";
	mess    += "Liste des arguments passés à\nla fonction " + arguments.callee.caller.name + " :\n";
	mess    += "(sur " + arguments.callee.caller.length + " attendus)\n\n";
 
	for (var i = 0 ; i < arg.length ; i++)
	{
		mess += "argument numero " + (i + 1) + " : " + arg[i] + "\n";
	}
	mess = calltree() + "\n" + mess + "\n------------------------------------------\n";
	alert(mess);
}
function calltree()
{
	var mess = "------------------------------------------\n";
	mess    += "Arbre d'appels :\n\n";
	if (document.all)
		return mess + "(indisponible pour IE)";
 
	var root = arguments.callee.caller.caller;
	var t = new Array();
	while (root)
	{
		t.push(root.name);
		root = root.caller;
	}
	for (var i = (t.length - 1); i >= 0; i--)
	{
		for (var ii = 0; ii < ((t.length - 1) - i); ii++)
		{
			mess += "  ";
		}
		mess += "appel n°" + ((t.length) - i);
		if (i == (t.length - 1))
			mess += " (racine)";
		mess += " : " + t[i] + "\n";
	}
	return mess;
}
Pour l'utiliser il suffit de placer dans une fonction quelconque l'appel suivant :
Je l'ai testée : elle marche très bien. (edit : petit oubli : pas complètement sous IE pour le moment )
Par contre, je voudrais y ajouter une amélioration sans y parvenir pour le moment :

---> voir ma question du titre : "Est-il possible de récupérer les arguments muets d'une fonction ?"

Ce que je voudrais, c'est accéder aux identificateurs utilisés pour nommer les arguments dans la signature de la fonction.
Exemple, dans ce bout de code imaginaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
function afficher(nom, score)
{
   // ...
}
Je sais récupérer le nom de la fonction, à savoir la chaîne "afficher", mais comment récupérer les chaines "nom", et "score" (attention nous sommes bien d'accord : je ne parle pas du nom "bebert" et du score "122" qui sont les valeurs passées ponctuellement à tel appel...)

Si quelqu'un a un début de piste, une idée géniale ou autre...
...en tout cas merci de m'avoir lu jusque ici ^^