or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

tessl/npm-is-number

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/is-number@7.0.x

To install, run

npx @tessl/cli install tessl/npm-is-number@7.0.0

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)