JavaScript ofrece flexibilidad para pasar argumentos a funciones, incluida la capacidad de enviar un número variable de argumentos desde una matriz.
Al igual que Python, JavaScript tiene un objeto de argumentos especial que representa todos los argumentos pasados a una función. Este objeto contiene cada argumento como una propiedad indexable. Por ejemplo:
function func() { console.log(arguments.length); for (arg in arguments) console.log(arg); } func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'
Sin embargo, pasar una matriz directamente a una función como argumentos no lo hará lograr el resultado deseado. En cambio, la matriz en sí se tratará como un argumento único. Para pasar una matriz como argumentos individuales, puede utilizar el método apply():
var arr = ['a', 'b', 'c']; function func() { console.log(this); // 'test' console.log(arguments.length); // 3 for (var i = 0; iEsto imprimirá 'test', 3, 'a', 'b' y 'c'.
Sintaxis extendida (ES6)
Desde ES6, JavaScript introdujo la sintaxis extendida (...), que proporciona una forma más concisa de lograr lo mismo resultado:
func(...arr);Esto expandirá los elementos de arr en argumentos individuales pasados a la función.
Parámetros nombrados con sintaxis extendida (ES6 )
También puede combinar parámetros con nombre con la sintaxis extendida para especificar que algunos argumentos deben tratarse como una matriz:
function func(first, second, ...theRest) { //... }Conclusión
JavaScript permite pasar un número variable de argumentos a funciones a través del objeto de argumentos o, en ES6 y posteriores, utilizando la sintaxis extendida. Esta flexibilidad permite una variedad de casos de uso, como la creación de funciones genéricas que pueden manejar una cantidad arbitraria de entradas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3