Alles funktioniert gut, wenn ich die js-Logik in einem Abschluss als einzelne js-Datei geschrieben habe, als:
(function(win){
//main logic here
win.expose1 = ....
win.expose2 = ....
})(window)
aber wenn ich versuche, eine alternative Protokollierungsfunktion vor diesem Schließen in dieselbe js-Datei einzufügen,
window.Glog = function(msg){
console.log(msg)
}
// this was added before the main closure.
(function(win){
//the former closure that contains the main javascript logic;
})(window)
Es wird ein TypeError beanstandet:
Uncaught TypeError: (intermediate value)(...) is not a function
Was habe ich falsch gemacht?
quelle
if
Anweisung in einer React-useEffect()
Funktion festgelegt, als ich immer wieder den Fehler "... ist keine Funktion" erhielt.Semikolonregeln vereinfachen
Jede Zeile , die mit einem beginnt
(
,[
`, oder jeder Operator (/, +, - ist die einzige gültigen ist), muss mit einem Semikolon beginnen.Dies verhindert a
Monstrocity.
Zusätzliche Anmerkung
Um zu erwähnen, was passieren wird: Klammern werden indiziert, Klammern werden als Funktionsparameter behandelt. Der Backtick würde sich in eine mit Tags versehene Vorlage verwandeln , und Regex oder explizit signierte Ganzzahlen werden zu Operatoren. Natürlich können Sie am Ende jeder Zeile einfach ein Semikolon einfügen. Es ist jedoch gut, sich vor Augen zu halten, wenn Sie schnell Prototypen erstellen und Ihre Semikolons ablegen.
Das Hinzufügen von Semikolons am Ende jeder Zeile hilft Ihnen nicht bei den folgenden Punkten. Denken Sie also an Aussagen wie
Der obige Fall wird zufällig / continue / break / ++ / - zurückgeben. Jeder Linter wird dies mit einem Dead-Code- oder ++ / - Syntaxfehler abfangen (++ / - wird niemals realistisch auftreten).
Wenn die Dateikettung funktionieren soll, stellen Sie sicher, dass jede Datei mit einem Semikolon endet. Wenn Sie ein Bundler-Programm verwenden (empfohlen), sollte dies automatisch erfolgen.
quelle
Fehlerfall:
Ausgabe:
Fix: Ihnen fehlt ein Semikolon (;), um die Ausdrücke zu trennen
quelle
Für mich war es viel einfacher, aber ich brauchte eine Weile, um es herauszufinden. Wir hatten im Grunde in unserer .jslib
Es stellt sich heraus, dass Unity (emscripten?) Diese Syntax einfach nicht mag. Wir haben es durch eine gute alte for-Schleife ersetzt und es hat sofort aufgehört, sich zu beschweren. Ich hasse es wirklich, dass es nicht die Linie zeigt, über die es sich beschwert, aber trotzdem, täusche mich zweimal, schäme mich.
quelle
(
in der nächsten Zeile kein Semikolon vorhanden ist . Ich sehe nichts davon in Ihrem Fall. Die Frage besteht nicht nur aus dem Titel!Dieses Problem trat auf, als ich eine neue ES2015-Klasse erstellte, bei der der Eigenschaftsname dem Methodennamen entsprach.
z.B:
Bitte beachten Sie, dass diese Implementierung in NodeJS 6.10 war.
Als Problemumgehung (wenn Sie den langweiligen Methodennamen 'setTest' nicht verwenden möchten) können Sie ein Präfix für Ihre 'privaten' Eigenschaften (wie
_test
) verwenden.Öffnen Sie Ihre Entwicklertools in jsfiddle .
quelle
Ausgabe: TypeError: (Zwischenwert) (Zwischenwert) ist keine Funktion * So beheben Sie IT -> weil Ihnen Semikolan (;) fehlt, um Ausdrücke zu trennen;
Warum kommt dieser Fehler? Grund: Spezifische Regeln für das automatische Einfügen von Semikolons, die mit ES6-Standards versehen sind
quelle
Wenn ich eine Stammklasse erstelle, deren Methoden ich mit den Pfeilfunktionen definiert habe. Beim Erben und Überschreiben der ursprünglichen Funktion ist mir dasselbe Problem aufgefallen.
Dies wird gelöst, indem die Methode der übergeordneten Klasse ohne Pfeilfunktionen definiert wird
quelle