Es sei denn, vs, wenn in Javascript mit Verwendung von Ausrufezeichen?

Den code unten versuche zu drucken "ist auch" für zahlen, die durch 2 teilbar.

Sollte es nicht so sein, wenn (test) dann() anstatt: if (!test) dann(), wenn die Bedingung getestet ist "n % 2". Der folgende code scheint zu Lesen", WENN zahlen sind NICHT durch 2 teilbar, drucken Sie "- Nummer ist auch' ", die nicht logisch erscheinen.

Mehr generell, was sind die Vorteile des Schreibens eine Wenn-Funktion mit einer If-Anweisung bei der Angabe der Bedingung, wenn das, was wir tun können, einfach zu schreiben, wenn (!Zustand)?

Jede Hilfe wird sehr geschätzt.

function unless(test, then) {
  if (!test) then();
}
function repeat(times, body) {
  for (var i = 0; i < times; i++) body(i);
}

repeat(5, function(n) {
  unless(n % 2, function() {
    console.log(n, "is even");
});
//→ 0 is even
//→ 2 is even
//→ 4 is even
  • % nicht testen Teilbarkeit. Es ist ein modulo - operator. Dieser code testet, ob n % 2 ausgewertet, was man als false (aka 0) und, wenn ja, ist es auch.
  • "Der folgende code versucht, drucken Sie "sogar" für zahlen, die durch 2 teilbar." - Versucht es nicht, es tut es. (Zumindest, sobald Sie fix die syntax-error am Ende wird Sie es tun.) Eh, ich bin damit einverstanden, dass die Idee "es sei denn" nicht wirklich sinnvoll semantisch für diesen test, aber der code nicht das gewünschte Ergebnis. Diese Art von Funktionen, die Aussehen wie Sie gehören in ein Test-framework, sodass Sie eine Behauptung, und etwas tun, wenn die Behauptung als falsch erweist.
  • Dieser code ist entsetzlich, wie durch die Tatsache belegt, dass es nicht einmal klar ist, was es tut, ohne sorgfältige Analyse. Es gibt keinen Vorteil hier. Ich kann nicht behaupten Vorteile im Allgemeinen Fall. Vielleicht ist es von Vorteil, es zu tun auf diese Weise, wenn Ihre pointy-haired boss das sagt es so machen oder du wirst gefeuert werden. Sie benötigen einen Kontext, wenn Sie vielleicht für diese Frage sinnvoll zu sein.
  • Der code ist Teil der Eloquent JavaScript. Es scheint aus dem Zusammenhang hier, es ist nur ein Beispiel bei der Erläuterung höher, um Funktion.
InformationsquelleAutor Henry | 2015-01-23
Schreibe einen Kommentar