diff --git a/es6-shim.js b/es6-shim.js index d1d052fe..ae10e83d 100644 --- a/es6-shim.js +++ b/es6-shim.js @@ -1179,14 +1179,13 @@ var NumberShim = function Number(value) { var primValue = Type.primitive(value) ? value : toPrimitive(value, 'number'); if (typeof primValue === 'string') { + primValue = _call(trimShim, primValue); if (isBinary(primValue)) { primValue = parseInt(_strSlice(primValue, 2), 2); } else if (isOctal(primValue)) { primValue = parseInt(_strSlice(primValue, 2), 8); } else if (hasNonWS(primValue) || isBadHex(primValue)) { primValue = NaN; - } else { - primValue = _call(trimShim, primValue); } } var receiver = this; diff --git a/test/number.js b/test/number.js index c6276f13..7b7fa204 100644 --- a/test/number.js +++ b/test/number.js @@ -380,8 +380,17 @@ describe('Number', function () { it('works with binary literals in string form', function () { expect(Number('0b1')).to.equal(1); + expect(Number(' 0b1')).to.equal(1); + expect(Number('0b1 ')).to.equal(1); + expect(Number('0b10')).to.equal(2); + expect(Number(' 0b10')).to.equal(2); + expect(Number('0b10 ')).to.equal(2); + expect(Number('0b11')).to.equal(3); + expect(Number(' 0b11')).to.equal(3); + expect(Number('0b11 ')).to.equal(3); + expect(Number({ toString: function () { return '0b100'; }, valueOf: function () { return '0b101'; } })).to.equal(5); });