To operator conditional, jest to równoważne coś takiego:
if (pattern.Gotoccurance.score != null) {
pattern.Gotoccurance.score;
} else {
'0';
}
Ale myślę, że instrukcja przypisania brakuje w kodzie pisał, jak to:
var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';
Zmienna score
zostanie przypisana, jeśli pattern.Gotoccurance.score
nie jest pusta:
var score;
if (pattern.Gotoccurance.score != null) {
score = pattern.Gotoccurance.score;
} else {
score = '0';
}
Wspólny wzór do zrobienia tego rodzaju zadań „wartość domyślna” w JavaScript jest użycie operatora logicznego OR (||
):
var score = pattern.Gotoccurance.score || '0';
Wartość pattern.Gotoccurance.score
będzie przypisana do zmiennej score
tylko wtedy, gdy wartość to nie jest falsy (wartości fałszujące to false
, null
, undefined
, 0
, ciąg o zerowej długości lub NaN
).
W przeciwnym razie, jeśli zostanie przypisana falsyka '0'
.
Aktualizacja: Występ będzie równoważny, należy zwrócić uwagę na czytelność, staram się użyć operatora potrójny na wyrażeniach, które są bardzo proste, a można też poprawić formatowanie, dzieląc go na dwie linie, aby to bardziej czytelne:
var status = (age >= 18) ? "adult"
: "minor";
Powiązane pytanie:
Och, ok gr8, dlaczego potrzebujemy tego rodzaju kodowania, czy jest to bardziej wydajna czy po prostu skrócona wersja o tej samej wydajności? –
Czy czas interpretacji wpływa na wydajność? – barkmadley
Jest to odpowiedź, która robi różnicę. Nie ma więcej wątpliwości, jeśli chodzi o JavaScript i operator trójskładnikowy. Dobrze zrobione CMS. –