åpenendede funksjons argumenter med script

stemmer
88

IMO, en av de viktigste bekymringene til Loggfila er språket for å støtte eksisterende vanilje Javascript-kode. Dette er inntrykket jeg hadde ved første øyekast. Ta en titt på følgende Javascript-funksjonen som er helt gyldig:

Merk: Jeg sier ikke at jeg liker denne tilnærmingen. Jeg sier bare dette er en gyldig Javascript-kode.

function sum(numbers) { 

    var agregatedNumber = 0; 
    for(var i = 0; i < arguments.length; i++) { 
        agregatedNumber += arguments[i];
    }

    return agregatedNumber;
}

Så bruker vi denne funksjonen med en rekke argumenter:

console.log(sum(1, 5, 10, 15, 20));

Men når jeg prøver ut dette med Loggfila barn , det gir kompilere time feil.

Jeg antar at dette er en feil. La oss anta at vi ikke har kompatibilitetsproblemer. Så er det noen måte å skrive denne typen funksjoner med åpent argumenter? Slik som paramsfunksjonen i C #?

Publisert på 02/10/2012 klokken 19:52
kilden bruker
På andre språk...                            


3 svar

stemmer
204

Loggfila måte å gjøre dette på er å plassere ellipse operatør ( ...) før navnet på argumentet. Ovennevnte vil bli skrevet som,

function sum(...numbers: number[]) {
    var aggregateNumber = 0;
    for (var i = 0; i < numbers.length; i++)
        aggregateNumber += numbers[i];
    return aggregateNumber;
}

Dette vil da type sjekk riktig med

console.log(sum(1, 5, 10, 15, 20));
Svarte 02/10/2012 kl. 19:57
kilden bruker

stemmer
3

I tillegg til @chuckj svar: Du kan også bruke en arrow function expressioni Loggfila (er slag av en lambdai Java / .NET)

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
Svarte 19/03/2017 kl. 09:37
kilden bruker

stemmer
0

I maskinskrevet manuskript er det konseptet med resten parameter , er den parameteren som mottar flere verdier av tilsvarende type.If vi målrette maskinskrevet manuskript da vi har for å skrive koden ECMAScript 6 standard, deretter maskinskrevet manuskript transpiler konverterer den til dens tilsvarende javascript kode ( som er ECMAScript 5 standard) .Hvis vi bruker Loggfila så vi må bruke tre punktum (...) preferx med restparameter variabelnavnet, for eksempel funksjon sum (... tall: antall []), så det ville fungere.

Merk: Rest Parameter må være siste parameter i parameter list.likewise funksjon sum (navn: string, alder: antall, ... tall: antall []).

Svarte 10/05/2018 kl. 06:56
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more