Ich weiß, dass in PHP 5.3 diese redundante ternäre Operatorsyntax verwendet wird:
startingNum = startingNum ? startingNum : 1
... können wir, falls zutreffend, eine Abkürzungssyntax für unsere ternären Operatoren verwenden:
startingNum = startingNum ?: 1
Und ich weiß über den ternären Operator in Javascript:
startingNum = startingNum ? startingNum : 1
... aber gibt es eine Abkürzung?
Danke Leute!
var startingNumber = startingNumber || 1;
Sowas suchst du, wo ist es voreingestellt, wenn undefiniert?
var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1; // 2
Das funktioniert übrigens für viele Szenarien, einschließlich Objekten:
var foo = bar || {}; // secure an object is assigned when bar is absent
||
gibt den ersten wahrheitsgemäßen Wert zurück, auf den er trifft, und kann daher als Koaleszenzoperator verwendet werden, ähnlich wie in C # ??
.
startingNum = startingNum || 1;
Ja da ist:
var startingNum = startingNum || 1;
Im Allgemeinen arbeitet expr1 || expr2
auf folgende Weise (wie von der Dokumentation erwähnt):
Gibt
expr1
zurück, wenn es intrue
konvertiert werden kann; Andernfalls wirdexpr2
zurückgegeben. Wenn er mitBoolean
-Werten verwendet wird, gibt||
true
zurück, wenn einer der Operandentrue
ist. Wenn beidefalse
sind, wirdfalse
zurückgegeben.
var startingNum = startingNum || 1;
In diesem Fall können Sie den Operator OR verwenden.
startingNum = startingNum || 1
Wenn Sie eine Bedingung mit Null haben, wie
startingNum = startingNum ? startingNum : null
sie können '&&' verwenden
startingNum = startingNum && startingNum
Die obigen Antworten sind richtig. In JavaScript die folgende Anweisung:
startingNum = startingNum ? otherNum : 1
kann als ausgedrückt werden
startingNum = otherNum || 1
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:
startingNum = startingNum ? otherNum : 0
Aber es kann ausgedrückt werden als
startingNum = startingNum && otherNum
Ich wollte nur ein anderes Szenario behandeln, falls andere nach einer allgemeineren Antwort suchten.
Um ein Ternär zu machen:
boolean_condition ? true_result : false_result
in Javascript können Sie Folgendes tun:
(boolean_condition && true_result ) || false_result;
Beispiel:
(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"