Saya melihat sintaks ini di pos StackOverflow lain dan ingin tahu apa fungsinya:
var len = this.length >>> 0;
Apa artinya >>>?
Saya melihat sintaks ini di pos StackOverflow lain dan ingin tahu apa fungsinya:
var len = this.length >>> 0;
Apa artinya >>>?
>>>selalu menyetel bit tanda ke nol, bahkan jika Anda menggeser bit nol.
>>>operator: stackoverflow.com/questions/3081987/…
var length = list.length >>> 0; (kasus penggunaan yang sama seperti Anda)
Jawaban:
Itu adalah operator shift kanan tanpa tanda tangan . Menariknya, ini adalah satu-satunya operator bitwise yang tidak ditandatangani di JavaScript.
Operator >>> menggeser bit ekspresi1 ke kanan dengan jumlah bit yang ditentukan dalam ekspresi2. Angka nol diisi dari kiri. Digit yang digeser dari kanan akan dibuang.
Mengabaikan makna yang dimaksudkan, kemungkinan besar di sinilah Anda akan melihatnya digunakan:
>>> 0 unik karena merupakan satu-satunya operator yang akan mengonversi jenis apa pun menjadi bilangan bulat positif:
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
Dalam contoh Anda var len = this.length >>> 0, ini adalah cara untuk mendapatkan panjang bilangan bulat yang akan digunakan untuk mengulang this, apa pun jenisnya this.length.
Demikian pula, ~~xdapat digunakan untuk mengubah variabel apa pun menjadi bilangan bulat bertanda.
Operator itu adalah shift kanan logis. Di sini jumlahnya digeser 0 bit. Pergeseran bit nol secara matematis seharusnya tidak berpengaruh.
Tapi di sini digunakan untuk mengubah nilai menjadi integer 32 bit unsigned.
>>>adalah operator yang sedikit bijak, shift kanan tanpa isi .
Saya pikir satu-satunya efek >>> 0pada bilangan positif adalah membulatkan ke bawah ke bilangan bulat terdekat, sama seperti Math.floor(). Saya tidak melihat mengapa ini perlu dalam contoh Anda, karena umumnya .lengthproperti (misalnya dari an Array) sudah menjadi bilangan bulat.
Saya juga melihat sedikit lebih pendek yang ~~digunakan dengan cara yang sama: ~~9.5 == 9; // true.
Math.abs()saat digunakan untuk bilangan negatif.
>>> 0pada bilangan negatif, ia mengubahnya menjadi pujian 2, kemudian lakukan pergeseran ke kanan. Karena itu -14 >>> 0 == 1073741820. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )
parseInt?