2012-12-26 2 views
2

Surfer sur le d3 source code aujourd'hui j'ai vu la ligne suivante:Qu'est-ce que cette déclaration compliquée fait en javascript?

return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1; 

J'ai fait javascript quotidien depuis des années et ne l'ai jamais vu auparavant. Qu'est-ce que c'est?

+0

http://www.w3schools.com/js/js_comparisons.asp Ceux-ci sont plus utilisés dans l'hebdomadaire javascripts que le quotidien sur es. Peut-être pourquoi vous ne les avez jamais rencontrés auparavant. – user93353

+8

votre représentant .. cette question .. – iKlsR

+5

Yup, péter cerveau total. Été trop occupé à manger tous les jours de Noël. Je supprimerais ceci mais loganfsmyth mérite les points. –

Répondre

14

C'est juste inférieur ou égal. Peut-être que le Ternary operator combiné avec le comma operator est ce qui vous jette?

Cela équivaut à ceci:

if (delay < elapsed) start(elapsed); 
else if (delay === elapsed) start(elapsed); 
else { 
    d3.timer(start, delay, time); 
} 
return 1; 
+3

Wow. J'ai posté ceci, j'ai pris la douche et je me suis immédiatement rendu compte que ** bien sûr ** je sais ce que signifie «supérieur à» ou «égal». Désolé. Avoir une photo de Frieda Khalo traîner avec Leon Trotsky avec mes excuses: http://awesomepeoplehangingouttogether.tumblr.com/image/32307958593 –

+0

Donc, il retourne toujours 1, parce que la virgule a une priorité plus élevée et regroupe l'expression a? B: c? ? – Paul

+0

@GeorgeMauer Ça arrive :) Pas surpris. Oui, l'opérateur de virgule ne vient pas très souvent. En fait, j'ai supposé qu'il avait été ajouté par l'emballeur D3, mais il semble que ce soit aussi dans la source d'origine. Je ne pense pas que cela apporte beaucoup d'avantages ici. – loganfsmyth

2

signifie simplement "inférieur ou égal à".

0

< = signifie moins ou égal.

La ligne complète que vous avez affichée moyen en langage clair « si le retard est inférieur à écoulé, début de retour (écoulé), sinon retourne la valeur de d3.timer.

+0

@irrelephant oui, bien sûr. Merci, j'ai corrigé cela. – Philipp

+1

L'opérateur de virgule modifie la valeur de retour. – irrelephant

1

cela signifie si l'opérande gauche est moins deouégale à droite opérande main dans presque (sinon toutes les langues)