Allen Wirfs-Brock (2013-09-07T18:08:26.000Z)
domenic at domenicdenicola.com (2013-09-18T18:58:52.465Z)
That's the way ToBoolean has always been defined http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.1.2 . All objects are considered to be Boolean true values. `&`, `|` ,`^`, `~` are actually bitwise operations on numeric values so they do ToInt32 (which may ultimately call valueOf). `!`, `&&`, `||` are logical boolean operations so they call ToBoolean. This generally makes sense, and far too much existing code depends upon this behavior to every consider changing it.