0

Ich war bis vor kurzem nur ein einfacher Javaspieler. In den letzten Wochen habe ich versucht, mehr fortgeschrittene Aspekte davon zu lernen. Ich stamme aus einer klassischen Programmierung Hintergrund, Prototypen in Javascript haben mich für eine Schleife geworfen mehr als ein paar Mal ...Beenden einer JavaScript-Funktion mit einer linken geschweiften Klammer ein Fehler?

Während die Snap.svg API studieren (Versuch Technik zu erlernen) ich folgendes gefunden:

(function (glob, factory) { 
 
    // AMD support 
 
    if (typeof define == "function" && define.amd) { 
 
     // Define as an anonymous module 
 
     define(["eve"], function (eve) { 
 
      return factory(glob, eve); 
 
     }); 
 
    } else if (typeof exports != 'undefined') { 
 
     // Next for Node.js or CommonJS 
 
     var eve = require('eve'); 
 
     module.exports = factory(glob, eve); 
 
    } else { 
 
     // Browser globals (glob is window) 
 
     // Snap adds itself to window 
 
     factory(glob, glob.eve); 
 
    } 
 
}(window || this, function (window, eve) {

Dies ist in der neuesten Version von Snap on line # begann 423

zuerst dachte ich, es war eine anonyme Selbst Aufruf Funktion, dann bemerkte ich die offenen geschweifte Klammer. Ich habe den nachfolgenden Code durchgesehen und kann die schließende Klammer nicht erklären. Darüber hinaus gibt die Suche nach dem Vorkommen geschweifter Klammern in den 8k + -Zeilen des Codes (unter Verwendung von Notepad ++) eine weitere offene geschweifte Klammer als das Schließen an. Wenn ich die erste Zeile im Snippet zusammenfasse, bricht der gesamte Rest (fast 8000 Zeilen) Code zusammen. Die letzte Zeile des Codes in der API endet mit:

})); 

Ist es möglich, die fehlende schließende Klammer auf der Funktion bis zum Ende der Datei wurde gedrückt? Könnte das vielleicht die doppelte schließende Klammer am Ende der Datei erklären (zweites Snippet)? Ich würde den Fehler auf GitHub melden, aber ich nehme an, dass ich das falsch lese.

Ich würde mich freuen, wenn jemand erklären könnte, was vor sich geht.

+0

Es ist eine Funktion, es hat eine öffnende geschweifte Klammer, und sicherlich eine schließende auch woanders im Code. Die Funktion ist nur Orte als ein Parameter in der IIFE. – adeneo

+0

Es wird erklärt [hier] (http://stackoverflow.com/q/34866510/1048572) – Bergi

Antwort

0

Das oberste Stück Code ist tatsächlich durch die endgültige })) geschlossen und es ist nicht ein Fehler.

Was Sie suchen, ist ein UMD Wrapper für den Code, so dass es von globalen Referenz, AMD und CommonJS geladen werden kann.

+0

Großartig! Gerade als ich anfing zu denken, dass ich dieses Zeug in den Griff bekam :(Danke für die Antwort –