webentwicklung-frage-antwort-db.com.de

Kurzer ternärer Operator für Javascript

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!

76
Web_Designer
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
129
Brad Christie

|| 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;
18
Adam Rackis

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 in true konvertiert werden kann; Andernfalls wird expr2 zurückgegeben. Wenn er mit Boolean-Werten verwendet wird, gibt ||true zurück, wenn einer der Operanden true ist. Wenn beide false sind, wird false zurückgegeben.

10
Tadeck
var startingNum = startingNum || 1;

In diesem Fall können Sie den Operator OR verwenden.

1
Daniel
startingNum = startingNum || 1

Wenn Sie eine Bedingung mit Null haben, wie 

startingNum = startingNum ? startingNum : null

sie können '&&' verwenden

startingNum = startingNum && startingNum
1
a2441918

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.

1
John Pace

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"
0
xxjjnn