Why is this happening
Boolean- a feature like Stringand Objectyou can call it as a function to convert something into a logical, for example:
Boolean(3);
JavaScript , .valueOf. Boolean - , valueOf . Object#valueOf ,
alert(Boolean.valueOf() === Boolean)
var x = {};
alert(x.valueOf() === x);
Hide result:
15.2.4.4 Object.prototype.valueOf
O - ToObject, .
:
9.9 ToObject
- ( ).
.valueOf . ( , , .toString). , Number .
:
3 == {valueOf: function() {return 3; }}//true
4 < {valueOf: function() {return 2; }}//false
Math.max(3, {valueOf: function() {return 5;}})//5,
, , JavaScript , ES7 .