JavaScript shortcuts using bitwise operators

Some common operations can be made shorter using bitwise operators. Here are some of my favorites.

Rounding off a number

Math.floor(3.5) can be written as 3.5|0. The Bitwise OR operator will make an integer out of the number, and this construct is in fact used in asm.js to denote an integer.

list[list.length * Math.random() | 0]
// ...same as:
list[Math.floor(list.length * Math.random()]

Checking for -1

The Bitwise NOT operator will turn -1 into zero. This makes substring checks with indexOf() a little shorter.

if (~string.indexOf("John")) { ... }
// ...same as:
if (string.indexOf("John") !== -1) { ... }