CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-is-number

Returns true if a number or string value is a finite number.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

is-number

Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.

Package Information

  • Package Name: is-number
  • Package Type: npm
  • Language: JavaScript (CommonJS)
  • Installation: npm install is-number

Core Imports

const isNumber = require('is-number');

Basic Usage

const isNumber = require('is-number');

console.log(isNumber(5e3));      // true
console.log(isNumber('10'));     // true
console.log(isNumber(''));       // false
console.log(isNumber([]));       // false
console.log(isNumber(NaN));      // false
console.log(isNumber(Infinity)); // false

Capabilities

Number Validation

Returns true if the value is a finite number (including string representations of numbers), false otherwise.

/**
 * Returns true if a number or string value is a finite number
 * @param {any} num - The value to test
 * @returns {boolean} - true if value is a finite number, false otherwise
 */
module.exports = function isNumber(num);

Behavior Details

Returns true for:

  • Number primitives: 0, 1, 1.1, 10, 100, -100, 0xff, 5e3
  • String representations: '0', '1', '1.1', '10.10', '0xff', '5e3', '012'
  • Mathematical constants: Math.PI, Math.E, Math.LN2, Number.MAX_VALUE, Number.MIN_VALUE
  • Mathematical operations: Math.abs(1), Math.cos(1), Math.pow(1, 2), etc.
  • Parsed numbers: parseInt('012'), parseFloat('012')
  • Whitespace-padded numbers: ' 56\r\n '
  • Pre-converted numeric values: +'', +[], +false, +true, +null (these are numbers when passed)

Returns false for:

  • Infinite values: Infinity, -Infinity
  • NaN values: NaN
  • Empty/whitespace strings: '', ' ', '\r\n\t'
  • Non-numeric strings: 'abc', '3a', 'foo', 'null', 'true', 'false'
  • Arrays: [], [1], [1, 2, 3]
  • Objects: {}, { a: 1 }
  • Functions: function() {}, Math.sin
  • Primitives: null, undefined, true, false
  • Date objects: new Date()
  • Regular expressions: /foo/

Implementation Notes

  • Uses typeof check for number primitives first for performance
  • For strings, checks that the string is not empty or whitespace-only
  • Uses Number.isFinite when available, falls back to isFinite for older environments
  • Optimized for performance - 3x-4x faster than previous versions for non-string/non-number inputs
  • Handles JavaScript's counterintuitive number coercion behaviors correctly
  • Never throws exceptions - always returns a boolean value
  • Important: Tests the actual value passed, not the original value before coercion

Usage Examples

const isNumber = require('is-number');

// Numeric values
console.log(isNumber(42));           // true
console.log(isNumber(-17.5));        // true
console.log(isNumber(0xff));         // true (hexadecimal)
console.log(isNumber(5e3));          // true (scientific notation)

// String representations
console.log(isNumber('42'));         // true
console.log(isNumber('-17.5'));      // true
console.log(isNumber('0xff'));       // true
console.log(isNumber('5e3'));        // true
console.log(isNumber('012'));        // true (treated as decimal, not octal)

// Edge cases that return false
console.log(isNumber(''));           // false (empty string)
console.log(isNumber('   '));        // false (whitespace only)
console.log(isNumber('abc'));        // false (non-numeric)
console.log(isNumber('3a'));         // false (mixed alphanumeric)
console.log(isNumber([]));           // false (empty array)
console.log(isNumber({}));           // false (empty object)
console.log(isNumber(null));         // false
console.log(isNumber(undefined));    // false
console.log(isNumber(NaN));          // false
console.log(isNumber(Infinity));     // false
console.log(isNumber(-Infinity));    // false

// Parsed values
console.log(isNumber(parseInt('12', 10)));     // true
console.log(isNumber(parseFloat('12.34')));    // true

// Important distinction: pre-converted vs original values
console.log(isNumber(+'')); // true (+ converts to 0, which is a number)
console.log(isNumber(''));  // false (empty string)
console.log(isNumber(+[])); // true (+ converts to 0, which is a number)
console.log(isNumber([]));  // false (array)
console.log(isNumber(+null)); // true (+ converts to 0, which is a number)
console.log(isNumber(null));  // false (null)

// Whitespace handling
console.log(isNumber('  42  '));     // true (leading/trailing whitespace OK)
console.log(isNumber('4\n2'));       // false (internal whitespace/newlines)

docs

index.md

tile.json