J'ai vu cette syntaxe sur un autre article de StackOverflow et j'étais curieux de savoir ce qu'elle fait:
var len = this.length >>> 0;
Qu'est-ce que cela >>>implique?
J'ai vu cette syntaxe sur un autre article de StackOverflow et j'étais curieux de savoir ce qu'elle fait:
var len = this.length >>> 0;
Qu'est-ce que cela >>>implique?
>>>met toujours le bit de signe à zéro, même si vous décalez de zéro bit.
>>>opérateur: stackoverflow.com/questions/3081987/…
var length = list.length >>> 0; (même cas d'utilisation que le vôtre)
Réponses:
C'est un opérateur de décalage à droite 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 vers la droite du nombre de bits spécifié dans expression2. Les zéros sont remplis à partir de la gauche. Les chiffres décalés vers la droite sont ignorés.
Ignorant sa signification prévue, c'est probablement là que vous le verrez utilisé:
>>> 0 est unique en ce sens que c'est le seul opérateur qui convertira 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 >>> 0c'est un moyen d'obtenir une longueur entière à utiliser pour itérer this, quel que soit le type this.length.
De même, ~~xpeut être utilisé pour convertir n'importe quelle variable en un entier signé.
Cet opérateur est un décalage logique vers la droite. Ici, le nombre est décalé de 0 bits. Un décalage de zéro bit mathématiquement ne devrait avoir aucun effet.
Mais ici, il est utilisé pour convertir la valeur en un entier 32 bits non signé.
>>>est un opérateur binaire, décalage à droite sans remplissage .
Je pense que le seul effet de >>> 0sur un nombre positif est d'arrondir à l'entier inférieur le plus proche, comme Math.floor(). Je ne vois pas pourquoi cela serait nécessaire dans votre exemple, car généralement une .lengthpropriété (par exemple d'un Array) serait déjà un entier.
J'ai aussi vu la légèrement plus courte ~~utilisée de la même manière: ~~9.5 == 9; // true.
Math.abs()utilisé pour les nombres négatifs.
>>> 0sur un nombre négatif, il le convertit en compliment de 2, puis effectue le décalage à droite. Par conséquent -14 >>> 0 == 1073741820. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )
parseInt?