Comparing version 5.0.0 to 6.0.0
25
index.js
@@ -11,15 +11,22 @@ /*! | ||
module.exports = function isNumber(num) { | ||
var type = typeof num; | ||
var number = +num; | ||
if (type === 'string') { | ||
// both a non-empty whitespace string and an empty string will be coerced to 0 | ||
// with the logic below. By stripping whitespace we can guarantee a correct result. | ||
if (num.trim() === '') { | ||
if ((number - number) !== 0) { | ||
// Discard Infinity and NaN | ||
return false; | ||
} | ||
if (number === num) { | ||
return true; | ||
} | ||
if (typeof num === 'string') { | ||
// String parsed, both a non-empty whitespace string and an empty string | ||
// will have been coerced to 0. If 0 trim the string and see if its empty. | ||
if (number === 0 && num.trim() === '') { | ||
return false; | ||
} | ||
} else if (type !== 'number') { | ||
return false; | ||
return true; | ||
} | ||
return (num - num + 1) === 1; | ||
return false; | ||
}; |
{ | ||
"name": "is-number", | ||
"description": "Returns true if the value is a number. comprehensive tests.", | ||
"version": "5.0.0", | ||
"version": "6.0.0", | ||
"homepage": "https://github.com/jonschlinkert/is-number", | ||
@@ -6,0 +6,0 @@ "author": "Jon Schlinkert (https://github.com/jonschlinkert)", |
@@ -15,2 +15,8 @@ # is-number [![NPM version](https://img.shields.io/npm/v/is-number.svg?style=flat)](https://www.npmjs.com/package/is-number) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![NPM total downloads](https://img.shields.io/npm/dt/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-number.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-number) | ||
## Why is this needed? | ||
This library provides a fast, simple way of checking whether a value is a number, whether defined as a string or number by the user. | ||
It's easy to check for a number in JavaScript, all we need to do is `typeof value === 'number'`. But sometimes that's not enough. For example, `typeof NaN` returns `number`, and there are many use cases where it's possible or necessary for a numerical value to be defined as a string, like in parsers or regex matches where it's not possible for the value to be defined as a number. | ||
## Usage | ||
@@ -21,3 +27,3 @@ | ||
```js | ||
var isNumber = require('is-number'); | ||
const isNumber = require('is-number'); | ||
``` | ||
@@ -30,23 +36,23 @@ | ||
```js | ||
isNumber(5e3) //=> 'true' | ||
isNumber(0xff) //=> 'true' | ||
isNumber(-1.1) //=> 'true' | ||
isNumber(0) //=> 'true' | ||
isNumber(1) //=> 'true' | ||
isNumber(1.1) //=> 'true' | ||
isNumber(10) //=> 'true' | ||
isNumber(10.10) //=> 'true' | ||
isNumber(100) //=> 'true' | ||
isNumber('-1.1') //=> 'true' | ||
isNumber('0') //=> 'true' | ||
isNumber('012') //=> 'true' | ||
isNumber('0xff') //=> 'true' | ||
isNumber('1') //=> 'true' | ||
isNumber('1.1') //=> 'true' | ||
isNumber('10') //=> 'true' | ||
isNumber('10.10') //=> 'true' | ||
isNumber('100') //=> 'true' | ||
isNumber('5e3') //=> 'true' | ||
isNumber(parseInt('012')) //=> 'true' | ||
isNumber(parseFloat('012')) //=> 'true' | ||
isNumber(5e3); // true | ||
isNumber(0xff); // true | ||
isNumber(-1.1); // true | ||
isNumber(0); // true | ||
isNumber(1); // true | ||
isNumber(1.1); // true | ||
isNumber(10); // true | ||
isNumber(10.10); // true | ||
isNumber(100); // true | ||
isNumber('-1.1'); // true | ||
isNumber('0'); // true | ||
isNumber('012'); // true | ||
isNumber('0xff'); // true | ||
isNumber('1'); // true | ||
isNumber('1.1'); // true | ||
isNumber('10'); // true | ||
isNumber('10.10'); // true | ||
isNumber('100'); // true | ||
isNumber('5e3'); // true | ||
isNumber(parseInt('012')); // true | ||
isNumber(parseFloat('012')); // true | ||
``` | ||
@@ -59,22 +65,20 @@ | ||
```js | ||
isNumber('foo') //=> 'false' | ||
isNumber([1]) //=> 'false' | ||
isNumber([]) //=> 'false' | ||
isNumber(function () {}) //=> 'false' | ||
isNumber(Infinity) //=> 'false' | ||
isNumber(NaN) //=> 'false' | ||
isNumber(new Buffer('abc')) //=> 'false' | ||
isNumber(null) //=> 'false' | ||
isNumber(undefined) //=> 'false' | ||
isNumber({abc: 'abc'}) //=> 'false' | ||
isNumber('foo'); // false | ||
isNumber([1]); // false | ||
isNumber([]); // false | ||
isNumber(function () {}); // false | ||
isNumber(Infinity); // false | ||
isNumber(NaN); // false | ||
isNumber(new Buffer('abc')); // false | ||
isNumber(null); // false | ||
isNumber(undefined); // false | ||
isNumber({abc: 'abc'}); // false | ||
``` | ||
## Why is this needed? | ||
## Release history | ||
This library provides a fast, simple way of checking whether a value is a number, whether defined as a string or number by the user. | ||
### 6.0.0 | ||
In JavaScript, can easily test for a number by doing `typeof value === 'number'`. But sometimes that's not enough. For example, `typeof NaN` returns `number`, and there are many use cases where it's possible or necessary for a numerical value to be defined as a string (I personally use this library to check for numbers when parsing a string. Clearly, this is a case where it's not possible for the value to be defined as a number). | ||
* optimizations, thanks to @benaadams. | ||
## Release history | ||
### 5.0.0 | ||
@@ -132,4 +136,5 @@ | ||
| --- | --- | | ||
| 42 | [jonschlinkert](https://github.com/jonschlinkert) | | ||
| 47 | [jonschlinkert](https://github.com/jonschlinkert) | | ||
| 5 | [charlike-old](https://github.com/charlike-old) | | ||
| 1 | [benaadams](https://github.com/benaadams) | | ||
| 1 | [realityking](https://github.com/realityking) | | ||
@@ -141,5 +146,5 @@ | ||
* [linkedin/in/jonschlinkert](https://linkedin.com/in/jonschlinkert) | ||
* [github/jonschlinkert](https://github.com/jonschlinkert) | ||
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) | ||
* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) | ||
* [GitHub Profile](https://github.com/jonschlinkert) | ||
* [Twitter Profile](https://twitter.com/jonschlinkert) | ||
@@ -153,2 +158,2 @@ ### License | ||
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on January 28, 2018._ | ||
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on March 31, 2018._ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8960
26
152