Maison > interface Web > js tutoriel > le corps du texte

## Que fait réellement l'opérateur Double Tilde (~~) en JavaScript ?

Linda Hamilton
Libérer: 2024-11-01 03:29:28
original
372 Les gens l'ont consulté

## What Does the Double Tilde Operator (~~) Actually Do in JavaScript?

Dévoilement de la vraie nature des doubles inclinables (~~) en JavaScript

Dans le domaine de JavaScript, l'opérateur se démarque avec sa fonctionnalité énigmatique. Il est bien connu que le simple tilde (~) signifie NON au niveau du bit, ce qui nous laisse réfléchir : à quoi sert son doublett () ?

Contrairement à l'intuition selon laquelle il double la négation au niveau du bit, l'opérateur ~~ a un effet surprenant. Il a la capacité de tronquer la partie décimale d'un nombre, l'arrondissant ainsi vers le nombre entier le plus proche.

En coulisses, l'opérateur ~~ opère en traitant son opérande comme un entier signé de 32 bits, exécutant opérations au niveau du bit quel que soit le type réel de l'opérande (nombre, chaîne, etc.). En conséquence, la partie fractionnaire est supprimée et le résultat est toujours un nombre.

Précisément, l'opérateur ~~ simule essentiellement la fonction suivante :

function truncate(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}
Copier après la connexion

Cependant, cette opération est valable vrai uniquement si la valeur de x est comprise entre -(2^31) et 2^31 - 1, inclus. En dehors de cette plage, un débordement peut se produire, conduisant à des résultats imprévisibles.

Bien que ~~ puisse s'avérer utile pour convertir rapidement des arguments de chaîne en nombres, ses limites (possibilité de débordement et comportement incorrect pour les valeurs non entières) font que c'est moins souhaitable pour la manipulation numérique. Au lieu de cela, il est généralement préférable d'utiliser x ou Number(x) à ces fins.

Déchiffrer la double négation

Comprendre l'opérateur ~~ comme négation d'une négation nécessite une plongée plus profonde dans la représentation binaire. Prenons comme exemple le nombre -43,2, représenté sous forme binaire signée (complément à deux) 32 bits :

-43.2<sub>10</sub> = 11111111111111111111111111010101<sub>2</sub>
Copier après la connexion

L'inversion de tous les bits (NOT au niveau du bit) produit :

NOT -43<sub>10</sub> = 00000000000000000000000000101010<sub>2</sub> = 42<sub>10</sub>
Copier après la connexion

Appliquer à nouveau la négation entraîne :

NOT 42<sub>10</sub> = 11111111111111111111111111010101<sub>2</sub> = -43<sub>10</sub>
Copier après la connexion

Ce résultat final (-43) diffère du résultat de Math.floor(-43.2), qui serait -44. En effet, ~~ arrondit les nombres à partir de zéro, contrairement à Math.floor, qui arrondit à l'inférieur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!