Est-il un nombre max d'arguments des fonctions JavaScript peut accepter?

Je sais que des fonctions JavaScript peut accepter "tout" nombre d'arguments.

function f(){};
f(1,2,3,4 /*...*/);

Mais je me demandais si il n'y a effectivement une limite au nombre de "tout" peut être?

E. g., disons que j'ai la main un million d'arguments pour f(). Cela fonctionnerait-il? Ou serait l'interprète de quille sur?

Je devine que le maximum soit (un) la mise en œuvre spécifique ou (b) (2^32)-1, depuis le arguments objet est semblable au tableau.

Je ne la vois pas mentionnées dans la spécification du langage, mais je ne pourrais pas être de la connexion de certains points.

  • J'espère vraiment que c'est purement de la curiosité, non pas parce que vous prévoyez de faire quelque chose avec cela.
  • Aussi, TOUTE grande séquence de données comme cela devrait être passé comme un seul argument qui est un tableau, et non pas en tant que distincts des arguments si une copie n'a pas besoin d'être à la vaste ensemble de données juste pour appeler la fonction. Ce doit être un exercice académique, pas quelque chose qui pourrait être rencontrés avec les bonnes pratiques de développement.
  • Oui, juste par curiosité 🙂
  • n'oubliez pas Function.prototype.apply. stackoverflow.com/questions/1379553/...
  • Je sais que sur .apply(), mais c'est faire une copie du tableau d'entrée trop. Le point est que toute l'interface qui s'attend à accepter un très grand nombre d'arguments ne devrait pas être déclaré pour les obliger à être passé sous la normale arguments. Beaucoup plus efficace pour passer un tableau donc pas de copie des données est nécessaire.
  • Ce n'est pas une question théorique! Même si vous n'avez jamais écrire explicitement une telle fonction, si vous utilisez l'ES 2015 la propagation de l'opérateur et des fonctions comme Math.max ou Array.prototype.concat(...arrayOfArrays) (pour aplatir un tableau de tableaux), vous pouvez obtenir à cette limite de façon dynamique, sans avoir écrit un monstre de la fonction. Les frais généraux mentionnés par jfriend00 n'est pas toujours question - la clarté de code est plus important que quelques octets de mémoire ou de cycles de PROCESSEUR, et de la propagation de la syntaxe peut parfois être le meilleur choix en la matière. Rechercher des alternatives pour "aplatir tableau" de mon code court...
  • Mon commentaire est à partir de Mars 2014. ES5015 n'a pas été publié jusqu'en juin 2015.
  • Je comprends que, et j'ai fait le commentaire maintenant parce que c'est pertinent. DONC, les réponses et les commentaires ne sont pas seulement pour les personnes qui posté le 🙂
  • Les aplatir tableau de tableaux de cas est là que j'ai rencontré ce problème aussi!