84 votes

JavaScript triple supérieur à

J'ai vu cette syntaxe sur un autre article de StackOverflow et j'étais curieux de savoir ce qu'il fait:

var len = this.length >>> 0;

Qu'est-ce que >>> implique?

104voto

Eric Points 36290

En ignorant le sens voulu, il est fort probable que vous le voyiez utilisé:


>>> 0 est unique en ce sens qu'il est le seul opérateur à convertir n'importe quel type en entier positif:

 "string"         >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3]        >>> 0 == 0
Math.pi          >>> 0 == 3
 

Dans votre exemple, var len = this.length >>> 0 , il s'agit d'une façon d'essayer de parcourir plus de this , quel que soit le type this.length .


De même, ~~x peut être utilisé pour convertir toute variable en un entier signé.

48voto

Joe Points 34413

C'est un opérateur de quart droit non signé . Fait intéressant, c'est le seul opérateur au niveau du bit qui n'est pas signé en javascript.

L'opérateur >>> décale les bits de expression1 de droite du nombre de bits spécifié dans expression2. Les zéros sont remplis par la gauche. Les chiffres décalés à droite sont ignorés.

8voto

Mark Byers Points 318575

Cet opérateur est un changement logique à droite. Ici, le nombre est décalé de 0 bit. Un décalage de zéro bits mathématiquement ne devrait avoir aucun effet.

Mais ici, il est utilisé pour convertir la valeur en un entier non signé de 32 bits.

3voto

nrabinowitz Points 27991

>>> est un peu sage opérateur, zéro de remplissage de décalage à droite.

Je pense que le seul effet de la >>> 0 sur un nombre positif est à arrondir à l'entier le plus proche, même en tant que Math.floor(). Je ne vois pas pourquoi ce serait nécessaire, dans votre exemple, comme, en général, un .length de la propriété (par exemple, à un Array) serait un entier déjà.

J'ai également vu un peu plus court, ~~ utilisé de la même façon: ~~9.5 == 9; // true.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X