Hoe een functie met parameters op basis van array te maken

Ik heb een array met simbolize-parameters van een functie.

Bijvoorbeeld:

var params = ['name', 'age', 'email'];

en deze informatie wordt gemaakt door een ander eindpunt dat deze array retourneert. en vanuit deze array zou ik graag een functie als deze willen creëren:

function (name, age, email) {
    //...
    //my custom code
    return result;
}

Dus zoals je kunt zien, wil ik automatisch functies maken en elk array-element gebruiken als argument voor die functie.

Is er een manier om dat te bereiken zonder eval te gebruiken?

Het lijkt erop dat nieuwe functie ('name', 'age', 'email', 'fn body') ook niet direct kan worden gegenereerd.

Bij voorbaat dank

1
Wat je wilt doen is niet logisch. Het heeft geen zin om functies te creëren met benoemde parameters. Wat is hier het echte probleem?
toegevoegd de auteur Alex Turpin, de bron
Moet je dit echt doen? Je kunt gewoon een array of object als een parameter verwachten en daar vanaf krijgen wat je nodig hebt.
toegevoegd de auteur Radoslav Georgiev, de bron

3 antwoord

var a = Function.apply( {}, ["name", "age", "email", "return email;"] );

/*function anonymous(name,age,email) {
return email;
}*/

a(1,2,3);

//3

Dit heeft echter geen concrete voordelen ten opzichte van eval , en wat u probeert te doen kan waarschijnlijk anders worden gedaan zonder de noodzaak om strings in code te evalueren

1
toegevoegd

Als u een functie met een reeks parameters wilt aanroepen, gebruikt u van toepassing . Bijvoorbeeld:

function foo(a, b, c) {
    alert(a + b + c);
}
foo.apply(null, [1, 2, 3]);
0
toegevoegd

U kunt .apply() gebruiken. Zorg ervoor dat de functie body het laatste lid van de array is.

Function.apply( null, your_array );
0
toegevoegd