bo jesteś tylko przechodząc jeden argumentów — tablicy.
Spróbuj alert(foo(1,2,3,4,5));
Argumenty są numerowane od 0 w JavaScript, więc po uruchomieniu plasterek na 1 i przekazać 1 argumentu, można dostać nic.
Należy zauważyć, że może to utrudnić optymalizację, aby obiekt "arguments
" mógł "wyciec" z funkcji. Ze względu na aliasing pomiędzy arguments
a parametrami formalnymi optymalizator nie może wykonać żadnej statycznej analizy funkcji, jeśli obiekt arguments
zostanie wysłany gdzie indziej, ponieważ nie ma pojęcia, co może się stać ze zmiennymi parametrów.
Czy lepiej byłoby skopiować argumenty? 'funkcja foo() { \t var args = argumenty; \t return Array.prototype.slice.call (args, 1); } ' – Eric
Artykuł MDN ze słowa kluczowego' arguments' opisuje opisany problem optymalizacji: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments – Eric