7
votes

myvar = !! Quelqu'un

Puis-je obtenir des éclaircissements sur les raisons pour lesquelles je voudrais utiliser cela? XXX


0 commentaires

4 Réponses :


10
votes

Dans les langues non strictement typées, le! L'opérateur convertit une valeur en booléen. Le faire deux fois équivaut à dire

myVar = (boolean)someOtherVar


10 commentaires

... Ou n'est-ce pas non renseigné?


@Stw: YouTube.com/watch?v=0qoya9-lwqk (voir 1:44 et 8:38)


Vous pouvez taper de jeux en JS en utilisant boolean (quelquehervar)


@BoltClock - Au cours de la première minute, j'avais des flashbacks au South Park où les beurres deviennent un proxénète; Tu sais ce que je dis?


@MOOGOO - Merci pour mon "Comment je ne savais pas qu'il existe?" moment de la journée


@Moogoo qui est pas un "type casting" - c'est une construction d'objets, et non la même chose du tout.


@Pointy: Dans quelles situations fait la différence entre boolean () et !! matière?


@chlmertz, @moogoo - tu as raison; Lorsque le constructeur boolean () est appelé (par opposition à être invoqué avec nouveau ), il semble renvoyer soit vrai ou false - en d'autres termes, les constantes et non un objet. Ainsi, true === booléen (2) est true , tandis que true === nouveau booléen (2) est false . La page MDC dit à peu près exactement cela (et laisse une merveille simplement ce que l'utilisation des objets pourrait être).


@chimetz, @moogoo, je ne voudrais toujours pas utiliser le terme "type casting", mais je suppose que c'est juste une question de préférence.


Il crée un objet bona-fide qui enveloppe la valeur primitive. En ce qui concerne les utilisations, il n'y a pas beaucoup. Vous pouvez ajouter des propriétés à l'objet (alors qu'avec une primitive toute propriétés ajoutée serait ignorée), mais il est inutile dans des comparaisons, car les objets ne sont que == à eux-mêmes dans JS. Je dirais que "Type Cast" est approprié car il décrit le comportement exactement, même si la mise en œuvre ici est différente de celle de la plupart des autres langues (appeler une fonction qui renvoie une syntaxe spéciale VS)



5
votes

(réécrit pour clarifier, simplifier) ​​

Cette instruction effectue quelques actions différentes: xxx

Le !! , je suppose, c'est ce que vous demandez vraiment. La réponse est simple: elle effectue deux opérations logiques et non contre le La vérité (A Javascript'ism) de quelquehervar .

En d'autres termes, si vous comprenez l'opérateur ! , cela y combine deux (! ! n'est pas un autre opérateur). En faisant cela, il renvoie essentiellement l'évaluation booléenne de quelquehervar - en d'autres termes, c'est une distribution de tout type quelquehervar est de booléen . < / p>

Alors ... pour marcher à travers cela et faire attention au résultat de myvar : xxx


0 commentaires

2
votes

Si vous avez besoin de transmettre une valeur booléenne à une fonction ou que vous n'ésidrez que pour évaluer uniquement les booléens dans des énoncés conditionnels, qui diffuse quelquehervar à un booléen pour vous en le négociant en double-nier.


0 commentaires

5
votes

C'est une double négation, mais cela fonctionne également pour la coulée de type. ! Certainvar retournera un booléen (true, si quelqueevar est "Truthy" et FALSE si c'est "faux", selon Conférences de Crockford ). Donc, !! onevar sera non (bool) et il sera donc booléen.


0 commentaires