diff --git a/test/objects.js b/test/objects.js index 8e86aac27..651cd3e0e 100644 --- a/test/objects.js +++ b/test/objects.js @@ -330,6 +330,8 @@ assert.ok(!_.isEqual(-0, 0), 'Commutative equality is implemented for `0` and `-0`'); assert.ok(!_.isEqual(null, void 0), '`null` is not equal to `undefined`'); assert.ok(!_.isEqual(void 0, null), 'Commutative equality is implemented for `null` and `undefined`'); + assert.ok(!_.isEqual(0, new Number(Number.MIN_VALUE)), '`0` is not equal to `new Number(Number.MIN_VALUE)`'); + assert.ok(!_.isEqual(new Number(Number.MIN_VALUE), 0), '`new Number(Number.MIN_VALUE)` is not equal to `0`'); // String object and primitive comparisons. assert.ok(_.isEqual('Curly', 'Curly'), 'Identical string primitives are equal'); diff --git a/underscore.js b/underscore.js index 8219dc508..46acc5a70 100644 --- a/underscore.js +++ b/underscore.js @@ -1223,7 +1223,7 @@ // Object(NaN) is equivalent to NaN. if (+a !== +a) return +b !== +b; // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; + return +a === 0 && +b === 0 ? 1 / +a === 1 / b : +a === +b; case '[object Date]': case '[object Boolean]': // Coerce dates and booleans to numeric primitive values. Dates are compared by their