JavaScript oferece flexibilidade na passagem de argumentos para funções, incluindo a capacidade de enviar um número variável de argumentos de um array.
Como Python, JavaScript tem um objeto de argumentos especial que representa todos os argumentos passados para uma função. Este objeto contém cada argumento como uma propriedade indexável. Por exemplo:
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'
No entanto, passar um array diretamente para uma função como argumentos não alcançar o resultado desejado. Em vez disso, o próprio array será tratado como um único argumento. Para passar um array como argumentos individuais, você pode usar o método apply():
var arr = ['a', 'b', 'c']; function func() { console.log(this); // 'test' console.log(arguments.length); // 3 for (var i = 0; iIsso imprimirá 'test', 3, 'a', 'b' e 'c'.
Spread Syntax (ES6 )
Desde ES6, JavaScript introduziu a sintaxe de propagação (...), que fornece uma maneira mais concisa de obter o mesmo resultado:
func(...arr);Isso expandirá os elementos de arr em argumentos individuais passados para a função.
Parâmetros nomeados com sintaxe de propagação (ES6 )
Você também pode combinar parâmetros nomeados com a sintaxe de propagação para especificar que alguns argumentos devem ser tratados como um array:
function func(first, second, ...theRest) { //... }Conclusão
JavaScript permite passar um número variável de argumentos para funções por meio do objeto de argumentos ou, no ES6 e posterior, usando a sintaxe de propagação. Essa flexibilidade permite uma variedade de casos de uso, como a criação de funções genéricas que podem lidar com um número arbitrário de entradas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3