2015-06-20 5 views
8

Ich habe Probleme, dieses Stück Code zu verstehen:Typoskript/JavaScript forEach Anruf

stringsArray.forEach(s => { 
    for (var name in validators) { 
     console.log('"' + s + '" ' + 
      (validators[name].isAcceptable(s) ? 
       ' matches ' : ' doesnt match ') + name); 
    } 
}); 

insbesondere die s => { ... Teil ist mysteriös. Es sieht so aus, als würde s der nächsten Zeichenfolge im Array in jeder Schleife zugewiesen. Aber was ist der => Teil Bedeutung? Es ist mit Lambdas verwandt, denke ich, aber ich folge nicht.

Antwort

12

Ja, es ist ein Lambda (zum Beispiel ähnlich wie ECMAScript6 und Ruby, sowie einige andere Sprachen.)

Array.prototype.forEach drei Argumente übernimmt, element, index, array, so s ist nur der Parametername für element verwendet wird.

Es wäre wie das Schreiben dieser in regelmäßiger ECMAScript5 sein:

stringsArray.forEach(function(s) { 
    for (var name in validators) { 
     console.log('"' + s + '" ' + 
      (validators[name].isAcceptable(s) ? 
       ' matches ' : ' doesnt match ') + name); 
    } 
}); 

Im obigen Beispiel, Sie nicht den ganzen Code aufwiesen, so nehme ich an validators{} nur eine einfache Aufgabe ist.

Die Syntax für das von Ihnen angegebene Beispiel ist tatsächlich identisch mit der ES6-Syntax.

Schauen Sie sich dieses Beispiel von the TypeScript handbook:

example

+0

Dank ... Noch ein wenig verwirrt ... Beachten Sie, dass ich ziemlich bewandert bin in Ruby, aber nicht in JS. Ich lerne TS stattdessen, weil es für mich eine solideere Grundlage zu sein scheint ... Ist "s => {}" ein Lambda als erstes Argument für for_each? Wenn ja, wie kann s wieder im Körper des Lambda selbst erscheinen? Da bin ich ratlos (vorerst). Danke! – pitosalas

+1

@pitosalas, TypeScript ist ein Icing über JavaScript. Ich denke, es ist wahrscheinlich eine schlechte Idee, zuerst TypScript zu lernen und nicht umgekehrt. Haben Sie die Dokumentation zu '.forEach' gelesen? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach –

+1

Nun, ich weiß ein wenig js (und ich lese eloquent js parallel) so anders als einige Tricks hier Ich fühle mich sehr wohl. Aber ich werde dem Link folgen, auf den Sie zeigen, und das auch studieren. Vielen Dank. – pitosalas