2016-11-11 2 views
1

ich vor kurzem um JS-Code wurde Stossen und ich fand die folgende Anmerkung:gesetzt Explizit den Rückgabetyp von Funktionen

/** 
* Explicitly set the return type here to prevent the primitive being lost when using new 
* @return {boolean} 
*/ 
function giveMeABoolean(please) { 
    ... 
} 

Was soll das? Rückgabetypen in JS? Ich habe online herumgestochert und kann nichts finden. Nach einigen Tests ist das Primitiv tatsächlich verloren, wenn new ohne die Annotation verwendet wird. Kann mir jemand erklären, wie diese Annotation funktioniert?

+0

Die Anmerkung nicht das Verhalten überhaupt nicht verändert. Alle Kommentare werden vom Interpreter verworfen. –

Antwort

4

Diese Kommentare sind JSDoc, die nur eine Möglichkeit ist, Ihren Code zu dokumentieren. Tools wie IDEs können diese Dokumentation aufgreifen und sie mit einer schönen Formatierung anzeigen, wenn Sie versuchen, die API für eine Methode zu verstehen.

Es ist auch wahrscheinlich, dass einige Tools diese Informationen enthalten, wenn sie statische Analysen durchführen, um Ihnen Hinweise für Dinge wie Intellisense zu geben. Dies würde den Entwicklern den Eindruck vermitteln, dass der "Typ" des zurückgegebenen Werts erhalten bleibt, während sie mit dem Code arbeiten. Diese Kommentare haben jedoch zur Laufzeit keine Auswirkungen.

Here's the documentation for the @return comment. Und hier ist ein wichtiges Beispiel, dass es vorgesehen ist:

/** 
* Returns the sum of a and b 
* @param {Number} a 
* @param {Number} b 
* @param {Boolean} retArr If set to true, the function will return an array 
* @returns {Number|Array} Sum of a and b or an array that contains a, b and the sum of a and b. 
*/ 
function sum(a, b, retArr) { 
    if (retArr) { 
     return [a, b, a + b]; 
    } 
    return a + b; 
} 
2

Ich denke, dass der Autor dieses Codes diese Informationen für Dokumentationszwecke bereitstellt. Wenn Sie wirklich Typinformationen zur Verfügung stellen möchten, denken Sie vielleicht typescript oder flow

Verwandte Themen