Dans js, dans le passé, la méthode Math.floor était utilisée pour arrondir à l'inférieur. Nous voyons maintenant cette utilisation : OR operation
interval = interval | 0
Pourquoi pouvons-nous arrondir à l'inférieur de cette manière ? comparaison d'étage, quels avantages ?
Notez que
|
n'est pas un OU logique, mais un OU au niveau du bit (OR).Quelques petites différences. Par exemple
Math.floor(NaN)
还是返回NaN
。但NaN | 0
返回 0。再比如
Math.floor(Infinity)
返回Infinity
,但Infinity | 0
renvoie 0Vous pouvez toujours le faire
interval = interval >> 0
Tout d’abord, S1ngS1ng à l’étage a raison sur ces petites différences.
De plus, la partie décimale de
|
是位或运算,由于0
在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0
还是1
和0
进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval
est supprimée. En fait, l’arrondi est obtenu en supprimant la partie décimale.Parce que c'est une petite opération, ce sera plus rapide que
Math.floor()
.La vraie raison est la suivante : conversion automatique de type dans js.
Les valeurs dansjs sont toutes arrondies à
64位
浮点型表示的。当一个数值需要进行位运算
时,js会自动将它转换为32位有符号
et la partie décimale est supprimée.n|0; n>>0; //Le 0 suivant est uniquement utilisé pour garantir que la valeur entière de n reste inchangée.
Réduire de 64 bits à 32 bits entraînera une perte de précision.
小心!
, portée efficace maximale : 2^32/2-1Les deux peuvent être réalisés,
interval = interval | 0
这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0
这种写法运行会快一点,写代码这个也肯定比Math.floor
Écrivez vite !