2017-07-23 1 views
0

Je regardais ces si déclarations:javascript: en utilisant l'opérateur ternaire if/else if/else instruction

if (cellDate < filterLocalDateAtMidnight) { 
    return -1; 
} else if (cellDate > filterLocalDateAtMidnight) { 
    return 1; 
} else { 
    return 0; 
} 

de this article et je me demandais pourquoi sténo si les déclarations ne sont pas utilisées (par exemple en utilisant le ternaire opérateur)> Y at-il un inconvénient à l'utiliser? Cela semble être une bonne occasion de l'utiliser.

Si elle peut être utilisée, est-ce que ci-dessous comment vous le simplifieriez? Je voudrais factoriser mon code bien que je suis un peu inquiet de s'écarter de l'exemple dans l'article (et l'introduction par inadvertance quelques problèmes de cas spéciaux)

cellDate < filterLocalDateAtMidnight ? -1 :(cellDate > filterLocalDateAtMidnight : 1 : 0); 

Je suppose que séparée si les déclarations sont utilisées en cas de valeurs null/undefined?

+0

Votre expression ternaire représente correctement les instructions if else. Si d'autres instructions peuvent être exprimées de manière compacte en utilisant un opérateur ternaire. –

Répondre

1

Les ternaires emboîtés prêtent à confusion et devraient généralement être évités. Voir le Airbnb style guide.

Avec les comparaisons numériques, vous pouvez généralement utiliser la soustraction. c'est-à-dire

return cellDate - filterLocalDateAtMidnight; 

Mais attention, cette solution est vulnérable au débordement d'entier pour de très grands nombres.