Ich habe ein Projekt geerbt und bin auf etwas Seltsames gestoßen. Der Typ, der das Projekt begonnen hat, ist ein erfahrener Programmierer, definitiv mehr als ich. Gibt es einen Wert oder einen Grund (egal wie schlecht) dabei:
%Vor%Es funktioniert jetzt und es ist in einem Teil des Codes, den ich nicht berühren muss. Ich möchte es nicht ändern und unerwartete Konsequenzen daraus ziehen lassen, ohne zu wissen, was es tun könnte.
Es ist nur eine hässliche Art zu schreiben
%Vor%ist wiederum dasselbe wie
%Vor% aber etwas schneller (ein Aufruf weniger zur $
-Funktion) und wohl einfacher zu lesen. Auf der anderen Seite gibt es mehrere Probleme damit:
$(something)
wird niemals als falsch ausgewertet (es gibt ein jQuery-Objekt zurück, das truthy ist). Wer das geschrieben hat, meinte wahrscheinlich $(something).length
. if
. Sie können einfach $("#pr_attr_plain_"+key).text(val === "" ? 0 : " " + val);
schreiben und es hat keine Auswirkungen, wenn der jQuery-Selektor keinem Element entspricht. el
noch nicht verwendet wurde, sollten Sie var el =...
nicht el =
schreiben, andernfalls wird el
global sein. =
anstelle von ==
zu schreiben, ist es ratsam, Zuweisungen innerhalb von Bedingungen zu vermeiden oder eine zusätzliche Klammer zu verwenden, um klarzustellen, dass Sie es absichtlich getan haben: .
%Vor%Wie auf JSLint hingewiesen wurde, ist es eine schlechte Übung, da es auch ein häufiger Fehler sein kann. Besser es zu beheben und die Wahrscheinlichkeit einer falschen Interpretation zu reduzieren.
Die Zuweisung in einer if
-Anweisung ist nicht so gebräuchlich, aber in einigen Sprachen, die sie unterstützen, taucht sie auf und wird oft verwendet, um Code prägnanter zu machen.
Normalerweise ist es für Situationen reserviert, in denen Sie einer Zwischenvariablen einen Wert zuweisen wollen, um sie auf "Wahrheit" zu testen und dann etwas anderes damit zu tun. Also zum Beispiel:
%Vor%.. ist ein bisschen kürzer als die Alternative:
%Vor% Leider erlaubt Javascript das var
Schlüsselwort in einer if
Anweisung nicht (dh, if (var foo = bar)
ist ein Syntaxfehler), was bedeutet, dass Sie sowieso eine Variable vorn deklarieren müssen (oder schlimmer noch, verwenden Sie eine globale Variable).
Ich sehe es in Perl auch ziemlich gut, da es auch die Variable auf den lexikalischen Bereich von if
beschränkt. Das ist wiederum etwas, das Javascript nicht kann (nun, Unterstützung für let
wird da).
Tags und Links javascript jquery