Ich habe diesen Code, der nach der leeren oder Null-Zeichenfolge sucht. Es funktioniert beim Testen.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Ich frage mich, ob es einen besseren Weg gibt als not email? or email is ''
. Kann ich string.IsNullOrEmpty(arg)
mit einem einzigen Aufruf das Äquivalent von C # in CoffeeScript ausführen? Ich könnte immer eine Funktion dafür definieren (wie ich es getan habe), aber ich frage mich, ob etwas in der Sprache fehlt.
coffeescript
jcollum
quelle
quelle
!!
Version verwenden, die eine übliche Methode ist, um im Wesentlichen in Boolesche Werte umzuwandeln. Wenn es darauf ankommt, ist dies mit ziemlicher Sicherheit schneller als die Definition einer Funktion, wie Jeremy vorgeschlagen hat.Es ist nicht ganz gleichwertig, wird aber
email?.length
nur dann wahr sein, wennemail
es nicht null ist und eine.length
Eigenschaft ungleich null hat . Wenn Sienot
diesen Wert verwenden, sollte sich das Ergebnis sowohl für Zeichenfolgen als auch für Arrays wie gewünscht verhalten.Wenn es eine
email
gibtnull
oder nicht.length
,email?.length
wird ausgewertetnull
, was falsch ist. Wenn es ein.length
hat, wird dieser Wert auf seine Länge ausgewertet, was falsch ist, wenn es leer ist.Ihre Funktion könnte wie folgt implementiert werden:
quelle
Dies ist ein Fall, in dem "Wahrhaftigkeit" nützlich ist. Sie müssen dafür nicht einmal eine Funktion definieren:
Warum funktioniert es?
quelle
.trim()
den Wert bereits als Teil Ihrer Validierungslogik aufgerufen haben . Die Antwort bezieht sich mehr auf die CS-Syntax.Überprüfen Sie zunächst, ob die E-Mail nicht undefiniert und mit dem existentiellen Operator nicht null ist. Wenn Sie wissen, dass sie existiert, gibt das
and email
Teil nur dann false zurück, wenn die E-Mail-Zeichenfolge leer ist.quelle
Sie können das Coffeescript oder die Operation = verwenden
quelle
Wenn Sie überprüfen müssen, ob der Inhalt eine Zeichenfolge ist, nicht null und kein Array, verwenden Sie einen einfachen Vergleichstyp:
quelle
typeof email isnt "string"
gibt für beide''
und'a'
Hier ist eine jsfiddle , die einen sehr einfachen Weg zeigt, dies zu tun.
Grundsätzlich tun Sie dies einfach mit Javascript:
In coffescript:
Hoffe das hilft jemandem :)
quelle
Ich denke, das Fragezeichen ist der einfachste Weg, eine Funktion für eine Sache aufzurufen, wenn die Sache existiert.
beispielsweise
Sie möchten die Farbe erhalten, aber nur, wenn das Auto existiert ...
Kaffeeskript:
übersetzt in Javascript:
Es wird als existenzieller Operator http://coffeescript.org/documentation/docs/grammar.html#section-63 bezeichnet
quelle
Ich bin mir ziemlich sicher, dass die Antwort von @thejh gut genug war, um die leere Zeichenfolge zu überprüfen, ABER ich denke, wir müssen häufig überprüfen, ob sie existiert. und dann müssen wir überprüfen, ob es leer ist. Zeichenfolge, Array und Objekt einschließen '
Dies ist die kürzere Möglichkeit für CoffeeScript, dies zu tun.
Wenn wir diese Fragenreihenfolge beibehalten, wird dies durch diese Reihenfolge überprüft. 1. Existiert sie? 2. nicht leere Zeichenfolge? 3. nicht leeres Objekt?
Es gab also keine Probleme für alle Variablen, auch wenn sie nicht existierten.
quelle
Basierend auf dieser Antwort zur Überprüfung, ob eine Variable eine hat
truthy
Wert hat oder nicht, benötigen Sie nur eine Zeile:& Sie können es auf dieser Online-Coffeescript-Konsole selbst ausprobieren
quelle
Anstelle der akzeptierten Antwort können
passwordNotEmpty = !!password
Sie verwendenEs gibt das gleiche Ergebnis (der Unterschied nur in der Syntax).
In der ersten Spalte steht ein Wert, in der zweiten das Ergebnis von
if value
:quelle