español ejemplos descargar definicion curso caracteristicas javascript

ejemplos - javascript html



Cómo obtener una porción de "argumentos" (6)

Desde here :

No debe cortar los argumentos porque previene las optimizaciones en los motores de JavaScript (V8, por ejemplo). En su lugar, intente construir una nueva matriz iterando a través del objeto arguments.

Entonces, la respuesta de Paul Rosiana es correcta

Todo lo que sabes que los arguments es un objeto especial que contiene todos los argumentos pasados ​​a la función.

Y mientras no sea una matriz, no puede usar algo como arguments.slice(1) .

Entonces la pregunta: ¿cómo cortar todo pero primer elemento de los arguments ?

UPD :

parece que no hay forma de hacerlo sin convertirlo en una matriz con

var args = Array.prototype.slice.call(arguments);

Si alguien publica otra solución sería genial, si no, verifico la primera con la línea de arriba como respuesta.


Esto puede ser una forma:

var args = Array.from(arguments).slice(1);


Puede "rebanar sin cortar" recorriendo procesalmente el objeto de argumentos:

function fun() { var args = []; for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } return args; } fun(1, 2, 3, 4, 5); //=> [2, 3, 4, 5]


Puedes usar el método [].slice.call(arguments, 1)

[] .slice le devolverá el objeto de función de corte y puede llamarlo como arguments y 1 son los parámetros


Inmiscuirse con funciones de matriz no es realmente necesario.

Usando la sintaxis del parámetro de descanso ...rest es más limpio y más conveniente.

Ejemplo

function argumentTest(first, ...rest) { console.log("First arg:" + first); // loop through the rest of the parameters for(let arg of rest){ console.log("- " + arg); } } // call your function with any number of arguments argumentTest("first arg", "#2", "more arguments", "this is not an argument but a contradiction");

...Descanso


P. ¿Cómo cortar todo pero primer elemento de los arguments ?

Lo siguiente devolverá una matriz que contiene todos los argumentos excepto el primero:

var slicedArgs = Array.prototype.slice.call(arguments, 1);

No tiene que convertir arguments a una matriz primero, hágalo todo en un solo paso.