Rumah > Artikel > hujung hadapan web > Apakah yang dilakukan oleh Operator Double Tilde (~~) dalam JavaScript?
Double Tilde Operator: Penyelaman Lebih Dalam ke ~~
Dalam JavaScript, anda mungkin menemui operator ~~, juga dikenali sebagai " pengendali double tilde". Walaupun tilde tunggal ~ mewakili bitwise NOT, anda mungkin tertanya-tanya apakah peranan yang dimainkan tilde berganda.
Bertentangan dengan gerak hati, ~~ tidak melakukan operasi NOT daripada NOT. Sebaliknya, ia secara tersirat menukar operannya kepada integer 32-bit dan mengalih keluar segala-galanya selepas titik perpuluhan. Tingkah laku ini digunakan pada kedua-dua nombor dan rentetan.
Secara teknikal, ~~ berkelakuan seperti fungsi berikut:
<code class="javascript">function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x); }</code>
Walau bagaimanapun, ia hanya memberikan hasil yang tepat apabila operan x berada dalam julat -(2^31) hingga 2^31 - 1. Melangkaui julat ini, limpahan berlaku, yang membawa kepada "membalut" nombor.
Ia mungkin kelihatan menggoda untuk digunakan ~~ untuk penghuraian berangka argumen rentetan , tetapi ini tidak digalakkan. Limpahan dan ketidaktepatan untuk bukan integer menjadikannya pilihan yang buruk. Lebih suka x atau Nombor(x).
Memahami Double Tilde sebagai BUKAN daripada NOT
Untuk memahami cara ~~ melaksanakan operasi NOT daripada NOT dengan berkesan, pertimbangkan contoh berikut:
Nombor -43.2 diwakili sebagai nombor binari 32-bit yang ditandatangani:
-43.2 = 11111111111111111111111111010101 (2)
Memohon bitwise NOT:
NOT -43.2 = 00000000000000000000000000101010 (2) = 42
Aplikasi kedua bitwise NOT:
NOT 42 = 11111111111111111111111111010101 (2) = -43
Perhatikan bahawa operator ~~ menghasilkan hasil yang sama seperti dua operasi NOT bitwise berturut-turut, walaupun ia tidak melakukan operasi NOT daripada NOT dengan cara yang mudah.
Atas ialah kandungan terperinci Apakah yang dilakukan oleh Operator Double Tilde (~~) dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!