I think your version might actually have changed the semantics slightly, so that `tempName` gets assigned the result of the whole expression `"t" + tempIndex && (tempIndex < 20 || hasOwn.call(this, tempName))`, which leads to infinite loops in some tests.

That's a good argument for changing it to something easier to read, though!