Solución:
ES3 (o ES5 o Javascript de la vieja escuela)
Puede acceder a los argumentos pasados a cualquier función de JavaScript a través de la magia arguments
objeto, que se comporta de manera similar a una matriz. Utilizando arguments
tu función se vería así
var print_names = function() {
for (var i=0; i<arguments.length; i++) console.log(arguments[i]);
}
Es importante tener en cuenta que arguments
es no una matriz. MDC tiene buena documentación al respecto: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions#Using_the_arguments_object
Si quieres girar arguments
en una matriz para que puedas hacer cosas como .slice()
, .push()
etc, use algo como esto:
var args = Array.prototype.slice.call(arguments);
ES6 / Mecanografiado
¡Hay una forma mejor! La nueva función de parámetros de descanso te respalda:
var print_names = function(...names) {
for (let i=0; i<names.length; i++) console.log(names[i]);
}
ES6 / ES2015
Aproveche la sintaxis del parámetro rest.
function printNames(...names) {
console.log(`number of arguments: ${names.length}`);
for (var name of names) {
console.log(name);
}
}
printNames('foo', 'bar', 'baz');
Hay tres diferencias principales entre los parámetros rest y el objeto de argumentos:
- Los parámetros rest son solo aquellos a los que no se les ha dado un nombre separado, mientras que el objeto de argumentos contiene todos los argumentos pasados a la función;
- el objeto de argumentos no es una matriz real, mientras que los parámetros de resto son instancias de matriz, lo que significa que métodos como sort, map, forEach o pop se pueden aplicar directamente;
- el objeto de argumentos tiene una funcionalidad adicional específica para sí mismo (como la propiedad callee).
var
print_names = function() {
console.log.apply( this, arguments );
};
print_names( 1, 2, 3, 4 );
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)