Mentafsir ~~ Operator dalam JavaScript
Semasa mendalami perpustakaan fizik permainan, anda mungkin telah menemui operator ~~ yang membingungkan. Persamaannya dengan operator ~ (bitwise NOT) menggesa anda untuk mempersoalkan fungsinya. Adakah ia hanya penafian berganda, mengembalikan nilai yang sama?
Anehnya, pengendali ~~ sebenarnya melangkaui asal-usulnya BUKAN secara bitwise. Ia mempunyai tujuan unik dalam JavaScript: menghapuskan segala-galanya selepas titik perpuluhan.
Menaakulan Di Sebalik Penyingkiran Titik Perpuluhan
Tingkah laku ini berpunca daripada penukaran tersirat operan kepada 32 yang ditandatangani -bit integer sebelum operasi bitwise dilakukan. Akibatnya, pengendali ~~ berkelakuan seperti berikut:
function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x); }
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penukaran ini hanya terpakai apabila nilai input (x) berada dalam julat -(2^31) hingga 2^31 - 1. Melebihi sempadan ini mengakibatkan limpahan data, yang berpotensi membawa kepada tingkah laku yang tidak dijangka.
Kelebihan dan Kelemahan Penggunaan ~~
Walaupun keupayaannya untuk menukar rentetan kepada nombor, penggunaan ~~ harus didekati dengan berhati-hati kerana kecenderungannya untuk melimpah. Selain itu, tujuan yang dimaksudkan tidak sejajar sepenuhnya dengan penukaran berangka. Sebaliknya, x atau Number(x) menawarkan pilihan yang lebih dipercayai dan intuitif.
Bitwise NOT Logic
Untuk memahami sebab ~~ bertindak sebagai penolakan berganda untuk 32-bit integer, mari kita pertimbangkan contoh -43.2:
Atas ialah kandungan terperinci ## Apakah yang ~~ Operator Lakukan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!