2016-06-19 3 views
0

Ich habe eine HTML-Datei in PAGE Verzeichnis mit dem Namen Test-Page-1.html erstellt. Und in der Wurzel habe ich eine JavaScript-Datei namens Script.Con.js.Abrufen von Retouren von einer anderen JavaScript-Datei

In der HTML-Datei, ich habe dieses Skript:

(function Flush() { 
    var Customer = { 
     name: prompt("Your Name?"), 
     id: 10100 
     product_bought: prompt("What is it you want?"), 
     d_o_d_expected: prompt("When do you expect it?")} 
    return "name: " + Customer.name + "\n" + 
    "id: " + Customer.id + "\n" + 
    "product: " + Customer.product_bought + "\n" + 
    "expected on: " + Customer.d_o_d_expected; 
}) 
/** FORGIVE THE CODE'S CLUMSINESS **/ 

I Script.Con.js will den Wert von der Flush() Funktion zurückgegeben zu bekommen. Ich weiß nicht, wie ich das machen soll, bitte hilf mir. Danke im Voraus.

Antwort

0

Sie var Aussage vor IIFE Aufruf, indem () vor oder nach der letzten schließenden Klammer Kennung gesetzt für zurückgegebene Wert von IIFE

<script> 
var result = (function Flush() { 
    var Customer = { 
     name: prompt("Your Name?"), 
     id: 10100, // missing `,` here 
     product_bought: prompt("What is it you want?"), 
     d_o_d_expected: prompt("When do you expect it?")} 
    return "name: " + Customer.name + "\n" + 
    "id: " + Customer.id + "\n" + 
    "product: " + Customer.product_bought + "\n" + 
    "expected on: " + Customer.d_o_d_expected; 
}()); // `result` should be accessible by `Script.Con.js` 
</script> 
<script src="Script.Con.js"></script> 
+0

@ T.J.Crowder verpasste die Unterlassung bei OP; bemerkte auch nicht 'Kunde' Objekt fehlt auch Komma', 'folgt' ID: 10100' welche Logs 'Uncaught SyntaxError: Unerwarteter Bezeichner (...)' – guest271314

+0

Ja, ich war mir nicht sicher, ob das '()' Ding war nur eine Unterlassung oder absichtlich verzögern, bis/außer es angerufen wurde. –

0

Die Art und Weise, die geschrieben, Ihre Script.Con.js Datei Code kann nicht umfassen kann Rufen Sie Flush   — und nichts anderes können Sie einen benannten Funktionsausdruck verwenden, um eine Funktion zu erstellen, auf die Sie nie einen Bezug halten. NFEs fügen dem aktuellen Bereich nicht einmal den Namen hinzu, daher kann sich nichts auf diese Funktion beziehen.

Sie haben ein paar Optionen:

  1. Machen Sie es eine Funktion Erklärung stattdessen durch die () um es zu entfernen, und dann haben Script.Con.js es nennen:

    function Flush() { 
        var Customer = { 
         name: prompt("Your Name?"), 
         id: 10100 , 
         product_bought: prompt("What is it you want?"), 
         d_o_d_expected: prompt("When do you expect it?")} 
        return "name: " + Customer.name + "\n" + 
        "id: " + Customer.id + "\n" + 
        "product: " + Customer.product_bought + "\n" + 
        "expected on: " + Customer.d_o_d_expected; 
    } 
    

    dann in Script.Con.js :

    var order = Flush(); 
    

    Beachten Sie, dass die Eingabeaufforderungen erst nach Script.Con.jsFlush() erfolgen.

  2. Run sofort und speichern Sie das Ergebnis in einer Variablen, dann Script.Con.js die Variable verwenden:

    var order = (function Flush() { 
        var Customer = { 
         name: prompt("Your Name?"), 
         id: 10100 , 
         product_bought: prompt("What is it you want?"), 
         d_o_d_expected: prompt("When do you expect it?")} 
        return "name: " + Customer.name + "\n" + 
        "id: " + Customer.id + "\n" + 
        "product: " + Customer.product_bought + "\n" + 
        "expected on: " + Customer.d_o_d_expected; 
    })(); 
    

    Notiere die () am Ende tatsächlich zu nennen. Das wird die prompt s sofort auslösen und das Ergebnis zu order speichern. Dann würde Ihr Script.Con.js Code die order Variable direkt benutzen.


Side Hinweis: Die überwältigende Konvention in JavaScript ist, dass Nicht-Konstruktor Funktionen wie diese beginnen mit einem Kleinbuchstaben, z.B. flush anstatt Flush. (Auch ein bisschen verwirrt über den Namen "Flush", aber ...)

Side Note 2: Sie vermissten eine , nach id: 10100. Hinzugefügt oben.

Verwandte Themen