Я нашел следующие короткие и хитрые коды на
Двойное побитовое НЕ (~~) – Джеймс Падолси
http://james.padolsey.com/javascript/double-bitwise-not/
Web Reflection: два простых трюка в JavaScript (старые, но всегда полезные )
http://webreflection.blogspot.com/2008/06/two-simple-tricks-in-javascript-olds.html
двойное побитовое неMath.round(v)
=== ~~v
Math.floor(v)
=== ~~v
(если v > 0)isNaN(Number(v)) ? 0 : Number(v)
=== ~~v
(если v не число с плавающей запятой)
double notBoolean(v)
=== !!v
(!Boolean(v)
=== !v
)
побитовый сдвигMath.round(v / 2)
=== v >> 1
Math.round(v)
=== v >> 0
один побитовый неa.indexOf(v) !== -1
=== ~a.indexOf(v)
Есть ли в javascript более короткие или хитрые коды?
Есть ли более короткие и хитрые коды в javascript?
Ответы (1)
Эти «трюки» не относятся к Javascript. Простой поиск в Google выдаст несколько страниц, предлагающих похожие трюки.
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
~~v
не может не быть эквивалентным какMath.round(v)
, так иMath.floor(v)
, учитывая, чтоround()
иfloor()
не делают одно и то же. Но даже если предположить, что это эквивалентно той или иной математической функции с использованием ярлыка~~
, это только усложнит чтение вашего кода. Как вы думаете, кто-то еще, читающий этот код, автоматически поймет, чтоMath.floor()
был предполагаемым эффектом? - person nnnnnn   schedule 23.05.2011Math.round(2.6) //3
НЕ РАВНО~~2.6 //2
- person Muhammad Umer   schedule 24.08.2013