Ich weiß, dass in PHP 5.3 anstelle dieser redundanten ternären Operatorsyntax:
startingNum = startingNum ? startingNum : 1
... können wir gegebenenfalls eine Kurzsyntax für unsere ternären Operatoren verwenden:
startingNum = startingNum ?: 1
Und ich kenne den ternären Operator in Javascript:
startingNum = startingNum ? startingNum : 1
... aber gibt es eine Abkürzung?
javascript
ternary-operator
Webdesigner
quelle
quelle
||
statt??
?||
Operator von JS nicht wahr oder falsch zurückgibt, sondern den ersten 'wahrheitsgemäßen' Wert zurückgibt. Angenommen , Sie habenval0
undval1
wieundefined
, undval2
ist2
,val3
ist3
.val0 || val1 || val2 || val3
wird zurückkehren2
, da es der erste "wahrheitsgemäße" Wert ist.||
gibt den ersten wahrheitsgemäßen Wert zurück, auf den es stößt, und kann daher ähnlich wie bei C # als Koaleszenzoperator verwendet werden??
quelle
Ja da ist:
Funktioniert im Allgemeinen
expr1 || expr2
folgendermaßen (wie in der Dokumentation erwähnt ):quelle
if a is truthy
vs. zu sagenif a is evaluated to true
?In diesem Fall können Sie den Operator OR verwenden.
quelle
Wenn Sie eine Bedingung mit null haben, wie
Sie können '&&' verwenden
quelle
anything && null
auf null ausgewertet, esanything
sei denn, es ist falsch?Die obigen Antworten sind richtig. In JavaScript die folgende Anweisung:
kann ausgedrückt werden als
Ein anderes Szenario, das hier nicht behandelt wird, ist, wenn der Wert false zurückgeben soll, wenn er nicht übereinstimmt. Die JavaScript-Abkürzung hierfür lautet:
Aber es kann ausgedrückt werden als
Ich wollte nur ein anderes Szenario behandeln, falls andere nach einer allgemeineren Antwort suchen.
quelle
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
???innerWidth * 0.0375 > 24
unterscheidet sich von demif true
Teil, der istinnerWidth * 0.0375
. Die Kurzschrift kann nur verwendet werden, wennexpression to be evaluated
undif true
der gleiche Wert sind. Das Gleiche gilt, warum Sie keine Kurzschrift verwenden könntenx = someBoolean ? 'Heck yea!' : 'No way!'
.Math.max(innerWidth * 0.0375, 24)
Math.max
in deinem Anwendungsfall besser als ein ternärer Operator.startingNum = startingNum ? otherNum : 1
kann ausgedrückt werden alsstartingNum = otherNum || 1
" ist falsch. Ich habe das gerade getestetUm ein ternäres wie zu machen:
In Javascript können Sie Folgendes tun:
Beispiel:
quelle
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
würde werden(innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24
?? Gibt es eine Abkürzung, damit ich sie nicht wiederholen mussinnerWidth * 0.0375
, außer sie einer Variablen zuzuweisen?Math.max( innerWidth * 0.0375 , 24 )
würde elegant arbeiten. Für einen allgemeineren Fall wäre es gut, eine beschreibende Methode mit dem Namen "SomethingifiedInnerWidth" zu erstellen, die die Lesbarkeit verbessert, anstatt eine Variable zu erstellen. Obwohl es in einigen Fällen besser lesbar wäre, eine Variable (mit diesem beschreibenden Namen) zu haben, stellt sich in Zukunft die Frage, warum sie damit multipliziert wird. wird nicht angehoben.Math.max
. super elegante Lösung !!