Obfuscated Bitwise C Incrementer ported to Javascript

HTML

<p>Obfuscated Bitwise C Incrementer ported to Javascript</p>
<summary><a>http://bytes.com/topic/c/answers/215441-bitwise-increment-one-liner</a>

</summary>

JavaScript

(function p(i) {
    ((i) !== 5) ? p((function () {
        console.log(i);
        i ^= (i & ~ - ~i) | (~i & -~i);
        return i;
    })(i)) : (function(){console.log(i)})();
}(1));