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?
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?
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é.
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.
>>>
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 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.