[javascript] ¿Es posible obtener todos los argumentos de una función como un solo objeto dentro de esa función?


3 Answers

Los argumentos son un objeto similar a una matriz (no una matriz real). Ejemplo de función ...

function testArguments () // <-- notice no arguments specified
{
    console.log(arguments); // outputs the arguments to the console
    var htmlOutput = "";
    for (var i=0; i < arguments.length; i++) {
        htmlOutput += '<li>' + arguments[i] + '</li>';
    }
    document.write('<ul>' + htmlOutput + '</ul>');
}

Pruébalo...

testArguments("This", "is", "a", "test");  // outputs ["This","is","a","test"]
testArguments(1,2,3,4,5,6,7,8,9);          // outputs [1,2,3,4,5,6,7,8,9]

Los detalles completos: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments

Question

En PHP hay func_num_args y func_get_args , ¿hay algo similar para JavaScript?




Respuesta similar a Gunnar, con un ejemplo más completo: incluso puede devolver todo de manera transparente:

function dumpArguments(...args) {
  for (var i = 0; i < args.length; i++)
    console.log(args[i]);
  return args;
}

dumpArguments("foo", "bar", true, 42, ["yes", "no"], { 'banana': true });

Salida:

foo
bar
true
42
["yes","no"]
{"banana":true}

https://codepen.io/fnocke/pen/mmoxOr?editors=0010




ES6 permite una construcción donde un argumento de función se especifica con una notación "..." como

function testArgs (...args) {
 // Where you can test picking the first element
 console.log(args[0]); 
}



Como muchos otros señalaron, los arguments contienen todos los argumentos pasados ​​a una función.

Si desea llamar a otra función con los mismos argumentos, use apply

Ejemplo:

var is_debug = true;
var debug = function() {
  if (is_debug) {
    console.log.apply(console, arguments);
  }
}

debug("message", "another argument")



Related