JavaScript : Erwartete und Zuordnung oder Funktion nennen, und stattdessen sah Sie einen Ausdruck
Ich bin mit JSHint um sicherzustellen, dass meine JavaScript "strenge" und ich bekomme die folgende Fehlermeldung:
Erwartet eine Aufgabe oder eine Funktion aufrufen, und statt dessen sah Sie einen Ausdruck
Auf dem folgenden code:
var str = 'A=B|C=D'
var data = {};
var strArr = str.split( '|' );
for (var i = 0; i < strArr.length; i++) {
var a = strArr[i].split('=');
a[1] && (data[a[0].toLowerCase()] = a[1]); //Warning from JSHint
}
Irgendwelche Ideen, warum ich bin immer so ein Fehler oder wie kann ich code um den Fehler zu entfernen.
was versuchen Sie zu tun, mit der letzten Zeile?
mir scheint, dass Sie zuweisen
der code versucht, eine Zeichenfolge zu analysieren und konvertieren Sie es in ein Objekt. Zum Beispiel 'ABC=XYZ'. Das erwartete Ergebnis ist-Daten.abc = xyz.
Die Letzte Zeile sieht verwirrend, könnte man umschreiben, dass es mehr eh klar.
mir scheint, dass Sie zuweisen
(data[a[0].toLowerCase()] = a[1])
statt vergleichen (data[a[0].toLowerCase()] == a[1])
.der code versucht, eine Zeichenfolge zu analysieren und konvertieren Sie es in ein Objekt. Zum Beispiel 'ABC=XYZ'. Das erwartete Ergebnis ist-Daten.abc = xyz.
Die Letzte Zeile sieht verwirrend, könnte man umschreiben, dass es mehr eh klar.
InformationsquelleAutor HSG | 2014-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine vereinfachte version, die gibt dieselbe Warnung:
Dies bedeutet, dass Sie einen Ausdruck, sondern weisen Sie das Ergebnis in eine variable. jshint kümmert sich nicht darum, was der eigentliche Ausdruck ist, oder dass es Nebenwirkungen. Obwohl Sie ordnen etwas in dem Ausdruck, Sie sind immer noch ignorieren, ist das Ergebnis des Ausdrucks.
Es ist ein weiterer Fehler von jslint, wenn Sie sich über:
Dieser warnt Sie, dass Sie möglicherweise verwenden möchten
==
statt=
im inneren logischen Ausdrücken. Es ist ein häufiger Fehler, deshalb sind Sie entmutigt die Verwendung von Zuweisungen in logischen Ausdrücken (obwohl es genau das ist, was Sie hier wollen).Grundsätzlich, jshint/jslint nicht wie Missbrauch von shortcut-evaluation des logischen operator als Ersatz für if-Anweisungen. Es wird davon ausgegangen, dass, wenn das Ergebnis eines Ausdrucks wird nicht verwendet, es sollte wohl nicht sein einen Ausdruck.
InformationsquelleAutor kapex
http://jshint.com/docs/options/#expr - JSHINT sagt, Expr Warnungen sind Teil der entspannende Optionen. Also, wenn Sie schreiben
/* jshint expr: true */
es nicht geben Ihnen die Warnung. Aber, Sie müssen wissen, der Funktionsumfang auch. Wenn Sie nur geben Sie diese Zeile oben auf alles, gilt diese Regel weltweit. Also, auch wenn du einen Fehler gemacht auf den anderen Linien, jshint werden ignoriert. Also, stellen Sie sicher, verwenden Sie diese mit bedacht aus. Versuchen Sie, um zu verwenden, wenn für eine bestimmte Funktion ( ich meine innerhalb einer Funktion nur)InformationsquelleAutor Jigar