Apakah ada kode yang lebih pendek dan rumit dalam javascript? [tertutup]

Saya menemukan kode pendek dan rumit berikut ini di

Double bitwise NOT (~~) - James Padolsey
http://james.padolsey.com/javascript/double-bitwise-not/

Refleksi Web: Dua trik sederhana dalam JavaScript (lama, tapi selalu berguna )
http://webreflection.blogspot.com/2008/06/two-simple-tricks-in-javascript-olds.html


bitwise ganda bukan

Math.round(v) === ~~v

Math.floor(v) === ~~v (jika v > 0)

isNaN(Number(v)) ? 0 : Number(v) === ~~v(jika v tidak mengambang)


tidak ganda

Boolean(v) === !!v

(!Boolean(v) === !v)

pergeseran bitwise

Math.round(v / 2) === v >> 1

Math.round(v) === v >> 0


bitwise tunggal bukan

a.indexOf(v) !== -1 === ~a.indexOf(v)


Apakah ada kode yang lebih pendek atau rumit dalam javascript?


person js_    schedule 23.05.2011    source sumber
comment
Apa yang Anda cari dengan menggunakan trik ini? Saya sarankan Anda tetap mendekati standar Ecmascript. Beberapa trik dimungkinkan di Ecmascript.   -  person mozillanerd    schedule 23.05.2011
comment
~~v tidak bisa setara dengan Math.round(v) dan Math.floor(v), mengingat round() dan floor() tidak melakukan hal yang sama. Tetapi bahkan dengan asumsi itu setara dengan satu atau fungsi Matematika lainnya menggunakan pintasan ~~ hanya membuat kode Anda lebih sulit dibaca. Apakah menurut Anda orang lain yang membaca kode itu akan secara otomatis memahami bahwa Math.floor() adalah efek yang diinginkan?   -  person nnnnnn    schedule 23.05.2011
comment
terima kasih komentar anda. saya hanya ingin membuat kode saya rumit (tetapi sederhana dan kompatibel lintas-browser). menyenangkan untuk menulis kode dengan bebas. tapi ini masalah yang sulit. jika kamu tahu apa ~~, !! atau ~-1 berarti, keterbacaan dan penulisan kode lebih baik daripada cara biasa. apakah tidak mungkin setiap pemrogram javascript mengetahui trik-trik ini seperti setiap pemrogram mengetahui &&, !, ++, dan lain-lain?   -  person js_    schedule 23.05.2011
comment
@mozillanerd mana yang tidak kompatibel dengan standar Ecmascript?   -  person js_    schedule 23.05.2011
comment
@MuhammadUmer tidak, saya tidak melakukannya.   -  person js_    schedule 11.07.2013
comment
Tautan yang berguna kalau-kalau ada yang menemukan ini juga akan menyukai ini. stackoverflow .com/questions/3899495/   -  person Muhammad Umer    schedule 07.08.2013
comment
Math.round(2.6) //3 TIDAK SAMA dengan ~~2.6 //2   -  person Muhammad Umer    schedule 24.08.2013


Jawaban (1)


"Trik" ini tidak khusus untuk Javascript. Pencarian sederhana di Google akan menghasilkan sejumlah halaman yang menawarkan trik serupa.

http://resnet.uoregon.edu/~gurney_j/jmpc/bitwise.html

http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/

http://www.beyond3d.com/content/articles/8/

person Craig White    schedule 23.05.2011