Il est l'opérateur conditional, il est équivalent à quelque chose comme ceci:
if (pattern.Gotoccurance.score != null) {
pattern.Gotoccurance.score;
} else {
'0';
}
Mais je pense qu'une déclaration d'affectation est manquante dans le code affiché, comme ceci:
var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';
La variable score
sera affectée si pattern.Gotoccurance.score
n'est pas nulle:
var score;
if (pattern.Gotoccurance.score != null) {
score = pattern.Gotoccurance.score;
} else {
score = '0';
}
Un modèle commun pour faire ce genre de missions « de valeur par défaut » en JavaScript est d'utiliser l'opérateur logique OU (||
):
var score = pattern.Gotoccurance.score || '0';
La valeur de pattern.Gotoccurance.score
sera affectée à la variable score
seulement si cette valeur n'est pas falsie (les valeurs de la falsification sont false
, null
, undefined
, 0
, chaîne de longueur nulle ou NaN
).
Sinon, s'il est falsifié, '0'
sera affecté.
Mise à jour: La performance sera équivalent, vous devriez vous concentrer sur la lisibilité, je tente d'utiliser l'opérateur ternaire sur les expressions qui sont très simples, et vous pouvez également améliorer la mise en forme, la divisant en deux lignes pour faire plus lisible:
var status = (age >= 18) ? "adult"
: "minor";
question connexe:
Oh, ok gr8, pourquoi avoir besoin de ce genre de codage, est-ce plus efficace ou juste une version raccourcie avec la même efficacité? –
Le temps d'interprétation affecte-t-il les performances? – barkmadley
C'est le genre de réponse qui fait la différence. Plus de doute quand il s'agit de JavaScript et de l'opérateur ternaire. Bien fait CMS. –