2014-07-18 1 views
2


J'ai cherché dans SO, mais je n'ai pas trouvé quelque chose de similaire. Peut-être que j'utilise de mauvaises clés de recherche.
J'éditais une bibliothèque javascript quand j'ai trouvé ce if statmentvirgule à l'intérieur si la déclaration en javascript

var a = location.hash.replace(/^#/, ""); 

    if (container = $("#content"), a) { 
     ..content 
    } else { 
     ...other code 
    } 

la première partie container = $("#content") consiste à attribuer la valeur de $("#content") à conteneur, mais je ne comprends pas pourquoi il y a une virgule dans le cas. Est-ce comme un opérateur AND? Quelque chose comme if (container = $("#content") && a)? Qu'est-ce qu'il évalue?

+2

Javascript est (jusqu'à présent) mon langage de programmation principal. J'ai déjà vu cet opérateur, mais seulement quand c'est réellement utile. Dans ce cas, il semble que cela voulait simplement «sauver une ligne» en lançant l'assignation dans l'instruction 'if'. À mon avis, ce n'est pas très lisible. Bien que je suppose que si c'est le code de bibliothèque que «chaque octet compte», mais même alors la bibliothèque peut/devrait être minifiée. Alors pourquoi ils ont écrit le code de cette façon ... définitivement un mystère pour moi. –

+0

merci @ChrisCirefice, je vais garder cela en considération – faby

Répondre

3

L'opérateur de virgule dans JavaScript est assez similaire au concept dans d'autres langages C-like. C'est une manière d'enchaîner plusieurs expressions en une seule expression (syntaxique). La valeur de l'ensemble est la valeur de la dernière expression de la liste. Ainsi, dans ce cas, container = $("#content") est évalué, puis a est évalué. La valeur de l'ensemble est la valeur de a.

Une bonne question est pourquoi ce code a été écrit de cette façon. Il y a des moments où l'opérateur virgule est utile, mais généralement c'est juste un moyen d'économiser de la dactylographie et de rendre le code un peu plus concis.

+0

merci. Je ne le savais pas – faby

2

Il s'agit d'un opérateur virgule.

Fondamentalement, il fait deux choses. Il y a d'abord affectation, puis le , évalue simplement a et valide par rapport à la condition if.

+0

merci! ne jamais cesser d'apprendre – faby

Questions connexes